Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/05/2011, 16h03   #1
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : mai 2011
Messages : 16
Points : 1
Points : 1
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 :
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 :
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.
Varkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 16h06   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
function onClick(_cell, _id)
et en choisissant un autre nom pour la fonction
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 16h17   #3
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : mai 2011
Messages : 16
Points : 1
Points : 1
Hum ça ne m'aide pas, pourrais-tu être plus précis ?
Varkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 16h31   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
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
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 16h45   #5
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
Code :
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 :
onClick="swapImage(this);"
et pour la fonction
Code :
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 17h04   #6
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : mai 2011
Messages : 16
Points : 1
Points : 1
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 ?
Varkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 17h33   #7
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
Tu n'a pas mis d'id sur ta cellule
Code :
<td bgcolor ="#6095E4" width="50" height="50" onClick="montreimg(this);" >
pour le récupérer il suffit de faire
Code :
1
2
3
function montreimg(cell) {
  alert(cell.id);
}
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 18h53   #8
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 933
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 933
Points : 4 756
Points : 4 756
Citation:
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!!!
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 21h28   #9
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
je ne comprends pas non plus j'ai donné la solution au dessus

les id ne servent à rien dans ce cas

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 08h23   #10
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : mai 2011
Messages : 16
Points : 1
Points : 1
Merci pour vos réponses.

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

Code :
<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.
Varkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 08h36   #11
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
colIndex et rowIndex ne te conviendraient pas ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 08h45   #12
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

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

Merci d'avance.
Varkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 09h16   #13
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
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>
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/05/2011, 09h40   #14
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : mai 2011
Messages : 16
Points : 1
Points : 1
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.
Varkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 09h57   #15
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
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 :
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 :
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
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 10h22   #16
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : mai 2011
Messages : 16
Points : 1
Points : 1
Merci pour tout vraiment, je comprend beaucoup mieux maintenant

Donc sujet résolu, merci à tous.
Varkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h58.


 
 
 
 
Partenaires

Hébergement Web