IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Récupérer l'id d'une cellule en onClick


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 5
    Points
    5
    Par défaut Récupérer l'id d'une cellule en onClick
    Bonjour tout le monde,

    Je suis en face d'un petit problème surement tout bête, mais je ne trouve pas la solution.

    Voici le code html de mes cellules et de mes images du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ?><td bgcolor ="#6095E4" width="50" height="50" onClick="montreimg(this);" ><?php
    if ($rand <= $randmax/2)
    {
        ?><img style="visibility:hidden" width="50" height="50" src="images/<?php echo $rand ?>.png" id ="img_<?php $i.$j; ?>" border="0" onClick="Click();"/><?php
    }
    else //Si le rand est plus grand que $rand, on enlève 8 a celui-ci ce qui nous donne 9-8 = 1, 10-8 = 2, 11-8=3, etc...
    {
        ?><img style="visibility:hidden" width="50" height="50" src="images/<?php echo $rand-($randmax/2) ?>.png" id ="img_<?php $i.$j; ?>" border="0" onClick="Click();"/><?php
    }
    ?></td>
    Et voici le script qui permet de retourner mes images dans le tableau html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
        function montreimg(_cell)
        {
            // récupère le premier fils image de la cellule.
            var _firstChildImg = _cell.getElementsByTagName("img")[0];
     
            // si elle est cachée on la montre
            if (_firstChildImg.style.visibility=="hidden")
            {
                _firstChildImg.style.visibility="visible";
            }
            else
            {
                // sinon, l'image est déjà cliqué, l'utilisateur n'est pas une flèche ;o)
                alert ("l'image est déjà retourné...");
            }
        }
    l'ID de mes cellules et de mes images sont incrémenter avec des variables en php. Je sais que les variables php ne peuvent pas être utilisé en JS donc il faut trouver un autre moyen, mais c'est là que je suis bloqué...

    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function onClick(_cell, _id)
    et en choisissant un autre nom pour la fonction

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Hum ça ne m'aide pas, pourrais-tu être plus précis ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    ben nommer une fonction selon un evenement c'est clairement se tirer une balle dans le pied

    de plus tu declares une fonction avec deux arguments et tu n'en passes qu'un

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onMouseover= "cell_<?php $i.$j; ?>"  onClick="onClick(this);" ><?php
    onMouseOver doit contenir du javascript
    c'est id qui contient l'id de la cellule

    on nomme une fonction à partir de ce qu'elle fait et non à partir de l'appel
    donc
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    onClick="swapImage(this);"
    et pour la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function swapImage(cell)
    {
      // récupère le premier fils image de la cellule.
      var image = _cell.firstChild;
     
      // si elle est cachée on la montre
      if (image.style.visibility=="hidden")
      {
        image.style.visibility="visible";
      }
      else
      {
        // sinon, l'image est déjà cliqué, l'utilisateur n'est pas une flèche ;o)
        alert ("l'image est déjà retourné...");
      }
    }
    je ne vois pas où il y a des id dans cette affaire
    A+JYT

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    J'ai édité mon premier post car j'avais copier/coller mon code avec différents testes, je m'en excuse.

    Pour le nom de ma fonction, je l'ai également modifié, ce n'était pas définitif m'enfin pas très important.

    Maintenant, avec cette méthode, je cherche à trouver l'id de ma cellule sur laquelle je clique avec l'attribut onclick de mon <td>, est-ce possible ?

    Si oui comment y procéder ?

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Tu n'a pas mis d'id sur ta cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td bgcolor ="#6095E4" width="50" height="50" onClick="montreimg(this);" >
    pour le récupérer il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function montreimg(cell) {
      alert(cell.id);
    }

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Maintenant, avec cette méthode, je cherche à trouver l'id de ma cellule sur laquelle je clique avec l'attribut onclick de mon <td>, est-ce possible ?
    oui si elle existe...l'ID

    Je ne vois pas la finalité de récupérer l'ID de la cellule pour afficher/masquer une image contenue à l'intérieur de celle ci!!!

  9. #9
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    je ne comprends pas non plus j'ai donné la solution au dessus

    les id ne servent à rien dans ce cas

    A+JYT

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses.

    Hum décidemment je fais tout de travers... Voici mon <td> au complet cette fois-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td bgcolor ="#6095E4" width="50" height="50" id= "cell_<?php $i.$j; ?>"  onClick="onClick(this);" >
    le $i et le $j me permettent d'incrémenter mon tableau et d'avoir les coordonnées de chaque cases, exemple

    1.1, 1.2, 1.3,1.4
    2.1, 2.2, 2.3, 2.4 etc.

    Pourquoi je cherche l'ID ? En fait l'id correspondrait aux coordonnées de ma cellule et ensuite je pourrai, avec une autre fonction, comparer les deux images, et à l'aide des coordonnées, si les images sont les mêmes, les laisser retourner.

    Peut-être y-a-t-il une autre solution pour les garder en mémoire et les laisser retourner si celles-ci sont semblables ?

    C'est comme ça que je vois mon Memory en fait.

    Mais le problème, c'est que mes variables sont en PHP... Et ces variables sont indispensables pour les coordonnées. Maintenant je sais pas s'il existe une méthode quelconques.. enfin bref, j'ai pas de solution et celle donnée ne fonctionne pas avec mes variables.

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    colIndex et rowIndex ne te conviendraient pas ?

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    J'ai déjà essayé, mais je n'arrive pas à les utiliser. Pourrais-tu me faire un exemple ?

    Merci d'avance.

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <html>
    <head>
    <script language="JavaScript">
        function foo(elem) {
            var ligne = elem.parentNode.rowIndex; 
            var colonne=elem.cellIndex;
            alert(ligne +"."+colonne);
        }
     
        function init(){
        cellules=document.getElementsByTagName('td')
        var i=-1;
        while (cellules[++i]){
        cellules[i].onclick=function(){foo(this)}
     
        }
        }
    </script>
    </head>
    <body onload='init()'>    
     
    <table width="100" border="3" cellspacing="2" cellpadding="2">
       <tr id="tr1" >
           <td>Ligne 1</td>
           <td>Ligne 1</td>
           <td>Ligne 1</td>
        </tr>
       <tr id="tr2" > 
           <td>Ligne 2</td>
           <td>Ligne 2</td>
           <td>Ligne 2</td>
        </tr>
       <tr id="tr3" > 
           <td>Ligne 3</td>
           <td>Ligne 3</td>
           <td>Ligne 3</td>
        </tr>
       <tr id="tr4" > 
    		<td>Ligne 4</td>
           <td>Ligne 4</td>
           <td>Ligne 4</td>
        </tr
    </table>
    </body>

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Géniale ! C'est exactement ce que je recherchais !

    Grâce à toi je vais pouvoir continuer dans mon projet !

    Je suis peut-être agaçant, mais j'ai un peu de peine à comprendre la fonction init() enfin juste la boucle while et pourquoi la variable i est à -1.

    J'aime pas copier /coller bêtement un code, j'aime savoir son utilité et comprendre son fonctionnement.

    Merci encore.

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    la fonction init est là pour attribuer les onclick a toutes les cellules du table

    pour ce qui est du principe de la boucle


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function init(){
        cellules=document.getElementsByTagName('td')  // recupère la collection de tous les td sur la page 
        var i=-1;  
     
        while (cellules[++i]){  //tant que il existe un element cellule avec l'indexe ++i
        cellules[i].onclick=function(){foo(this)} // on attribue à la cellule une fonction sur son click
    Pour ce qui est de ++i
    c'est un incrément immédiat

    un exemple pour comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var ==-1
    alert(++i)
    alert(++i)
     
    var i=-1
    alert(i++)
    alert(i++)
    Dans le premier cas l'incrément est appliqué immédiatement
    Dans le second l'increment se fait après l'interprétation de la ligne

    pourquoi commencer avec i=-1 ?
    une collection commence à l'indexe 0
    la première cellule de la collection est donc cellules[0]
    dans la boucle la première itération pointe donc sur cellules [++ (-1) ] =>[0] puisque l'incrément est immédiat

    L'interet de cette technique ? Les boucle while sont plus rapides que les boucles for et j'ai un calcul de length en moins puisque la boucle for nécessiterait une limite cellules.length

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Merci pour tout vraiment, je comprend beaucoup mieux maintenant

    Donc sujet résolu, merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer la valeur d'une cellule du tableur OOo
    Par manubrard dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 22/02/2006, 17h51
  2. [WebForms][DataGrid] Récupérer la valeur d'une cellule...
    Par elbj dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 12/12/2005, 14h00
  3. [C#] [Automation Word] Récupérer la valeur d'une cellule
    Par Ditch dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/06/2004, 15h57
  4. Récupérer la couleur d'une cellule excel par Delphi
    Par teamsebracing dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 05/06/2003, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo