begin process at 2012 05 28 22:40:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Fonctionnement d'une propriété d'un navigateur

 > 

Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un stylme 'Display:block'


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un stylme 'Display:block'

jeudi 11 décembre 2008 à 18:00:39 | Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un stylme 'Display:block'

kalamity

Bonjour,

J'aurais besoin de l'aide de développeur en javascript.

J'ai créé un tableau en HTML contenant X lignes et Y colonnes.
Chaque cellule contient un lien.
Je désire que l'utilisateur puisse cliquer sur une zone vide de la cellule ou sur le lien, d'où l'utilisation du style 'display:block' pour chaque lien.

je veux ensuite que quand l'utilisateur clique sur une cellule, une fonction javascript se déclenche et fait diverses actions dont changer le style de cette cellule.

Avec une fonction javascript que je vais vous fournir, tout fonctionne si je retire le style 'display:block' de mes liens ... mais j'en ai besoin.

je pense qu'il faudrait pouvoir déterminer en javascript "l'identité" de la cellule qui contient mon lien...

Pourriez vous m'indiquer une solution ?


merci !


Voici mon code :


<HTML>
<HEAD>
<style type="text/css">

    .dosel table    { border:0px; width:450px;  }
    .dosel td       { text-align: center; width:140     }
    .dosel td.sel   { background-color: #F0F0FF; cursor:pointer;  }
    .dosel td.nosel { background-color: #F8F8F8;   }
    .dosel tfoot    { font-style: italic; font-size: 12px; font-color: #ccc;    }
    .dosel a        { display:block; text-decoration: none; }

     


     
</style>

<script type="text/javascript">


function change_style(event)
{

var dosel=document.getElementById("dosel");
event = event || window.event;
var nCell = event.target || event.srcElement;
var colid = nCell.cellIndex;
var rowid = nCell.parentNode;
while(rowid.tagName!='TR') rowid = rowid.parentNode;
rowid = rowid.rowIndex ;

        if (dosel.rows[rowid].cells[colid].className == "nosel")
        {
            dosel.rows[rowid].cells[colid].className="sel";
        }
        else
        {
            dosel.rows[rowid].cells[colid].className="nosel";
        }
   
    //Puis je ferais d'autres actions ici
   
}

function init()
{
document.getElementById("dosel").onclick = change_style;
}

window.onload = init;

</script>
</HEAD>
<body>

<div class="dosel">
    <table cellspacing="4" id="dosel">
        <tr>
            <td class="nosel">
                <a href="#">Stressé</a>
            </td>
            <td class="nosel">
                <a href="#">Timide</a>
            </td>
            <td class="sel">
                <a href="#">Bavard</a>
            </td>
        </tr>
        <tr>
            <td class="nosel">
                <a href="#">Amical</a>
            </td>
            <td class="sel">
                <a href="#">Gentil</a>
            </td>
            <td class="nosel">
                <a href="#">Disponible</a>
            </td>
        </tr>
        <tfoot>
            <tr>
                <td colspan=3>
                    Vous pouvez sélectionner un ou plusieurs mots.</br>Vous pouvez aussi déselectionner un mot.</br>Vous ne pouvez pas déselectionner un mot pour lequel vous avez déjà voté
                </td>
            </tr>
        </tfoot>
    </table>
</div>
       
       
</body>
</html>
jeudi 11 décembre 2008 à 21:56:10 | Re : Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un stylme 'Display:block'

PetoleTeam

Membre Club
Bonjour,
J'ai l'impression que tu te compliques la vie, je m'explique...
ta fonction change_style récupére l'événement produit
event = event || window.event;
et tu en récupéres l'auteur
var nCell = event.target || event.srcElement;
dans ce cas pourquoi ne pas tester si il s'agit d'une TD
SI OUI alors tu swap le style
SI NON alors tu prend le parentNode
et ainsi de suite...

;O)
jeudi 11 décembre 2008 à 22:10:31 | Re : Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un stylme 'Display:block'

kalamity

merci pour ta réponse.

et bien avec ce code (que j'ai récupéré à droite à gauche ^^), j'obtiens une erreur car apparemment je ne clique pas sur un td mais sur un lien qui prend toute la cellule.

Donc j'ai essayé de remplacé la ligne :

var nCell = event.target || event.srcElement;

par ces deux là :

var nLien = event.target || event.srcElement;
var nCell = nlien.parentNode;


en me disant que le ParentNode du lien devait être la cellule dans laquelle il se trouve.
Mais j'obtiens une erreur sur la 2° de ces lignes : "Nlien n'est pas défini"

Tu vois le problème ?

(je précise que je suis un néophyte du javascript ... disons que j'en avais pas fait depuis des années)
jeudi 11 décembre 2008 à 22:16:51 | Re : Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un stylme 'Display:block'

PetoleTeam

Membre Club
disons que j'en avais pas fait depuis des années
c'est comme le vélo cela ne s'oubli pas !

var nCell = event.target || event.srcElement;
nCell ou plus exactement l'Objet qui a déclenché l'événement peut être tout ce qui se trouve dans le DIV conteneur, la TABLE, la TR etc...jusqu'au lien A de la cellule...

donc il te faut le tester comme je te l'ai indiqué ci dessus
;O)
jeudi 11 décembre 2008 à 22:31:17 | Re : Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un stylme 'Display:block'

kalamity

Ben écoute j'allais te répondre obstinement que ça ne pouvait pas marcher parce que j'avais dféjà testé ... mais j'ai retesté en ça fonctionne ! merci :)

    var nCell = event.target || event.srcElement;
    if (nCell.tagName=='A')
    {
        var nCell = nCell.parentNode;
        var colid = nCell.cellIndex;
        var rowid = nCell.parentNode;
        while(rowid.tagName!='TR') rowid = rowid.parentNode;
        rowid = rowid.rowIndex ;
       ....
   }




Bonne soirée !
jeudi 11 décembre 2008 à 22:43:16 | Re : Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un stylme 'Display:block'

PetoleTeam

Membre Club
perso j'aurais fait un truc du style
//--------------------------
function change_style(event){
  //-- Recup evenement
  event = event || window.event;
  //-- Recup objet declencheur
  var Obj = event.target || event.srcElement;
  //-- tant que ce n'est pas une TD
  while( Obj.tagName !='TD'){
    //-- Recup le parent
    Obj= Obj.parentNode;
    //-- Si parent nul on quitte, exemple click sur la bordure de la table
    if( !Obj) return();
  }
  //-- Swap la className
  if( Obj.className == "sel")
    Obj.className = "nosel"
  else
   Obj.className = "sel";
  return();
}

qui me paraît plus simple...me semble t-il !

;O)
vendredi 12 décembre 2008 à 00:48:07 | Re : Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un stylme 'Display:block'

kalamity

oui je vais tester ça. Effectivement, si je peux accèder directement à la classe de la cellule sans avoir à préciser quelle cellule (ligne, colonne), c bien mieux.

En tous cas merci.

Ce code est en fait pour un appli facebook.
Dans une simple page html en local il fonctionne, mais sur facebook, après avoir adapté les fonctions javascript en FBJS, je n'ai aucune réaction .... aurait tu déjà programmé sur facebook avec leur JBJS par hasard ?

Merci !


Cette discussion est classée dans : style, lien, cellule, rowid, dosel


Répondre à ce message

Sujets en rapport avec ce message

style sur lien [ par nico606 ] Slt voila g un texte et quamd on clic dessu g un calque qui s'affiche mais la feuille de style ne s'applique pasvoila la source:< appliquer plusieurs styles CSS sur une cellule d'un tableau [ par zizou100679 ] sur une balise TD je voudrais appliquer plusieurs styles provenant d'une feuille de style. on va appeler cssGras un style qui met la police en gras, c Lien sur une cellule [ par willinfeo ] Bonjour a tous,j'ai un tableau contenant des liens et je cherche un moyen pour que l'utilisateur puisse cliquer sur la cellule entiere (pas que sur le Feuilles de style [ par mathieumg ] Bonjour j'aimerais faire une page avec différentes sortes de lien et de mousevers mais je ne sais pas comment. Je crois qu'il faut utiliser les feuill NODE probleme HELPME [ par youpiyoyo ] j'ai une arborescence de ce type:/***********************************************************************************************************/<FO Question de débutant [ par DeViL66 ] Bonjour tout le monde !! Je débute en html et j'aimerai avoir une petite aide, car j'ai un peu de mal Je fait un petit site et j'aimerai que dans le m faire un lien clignotant dans une page de style ou dans mon fichier web [ par astuces_jeux ] je cherche comment faire un lien clignotant dans un fichier css si vous ne savez pas dites moi comment en faire autrement merci d'avance@++Astuces-je Modifier l'image background d'une cellule [ par darb66 ] Hello, je crée un menu dynamique et j'aimerai que l'image en background de ma cellule change lorsque le souris passe dessus. Donc j'ai créé une foncti lien dans une cellule [ par dadbe ] Salut,J'aurais voulu savoir si il était possible de diriger un lien vers une cellule d'un tableau?En gros, afficher le contenu du lien dans la cellule fonction conflit style [ par boscomac ] Bonjour, J'ai une fonction en javascript (avec la librairie JQuery) qui me permet lorsque je passe sur une Div d'animer la couleur du fond ainsi que


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales