Bonjour tout le monde,
je me permes de faire appel à la communauté car j'ai un petit soucis en utilisant DOM et ne parvient pas à le résoudre.
Un dessin vaut parfois mieux qu'un long discours, alors voici le code suivant (j'explique le soucis après)
Mon soucis:
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 var Tableau = new Array(); Tableau[1] = "Data 1"; Tableau[2] = "Data 2"; var MainUL = document.createElement("UL"); var MainLI = document.createElement("LI"); var MainLItext = document.createTextNode("Root"); MainLI.appendChild(MainLItext); var SecondUL = document.createElement("UL"); for(Cpt = 1; Cpt <= Tableau.length - 1; Cpt++) { var cLI = document.createElement("IL"); var cLItext = document.createTextNode(Tableau[Cpt]); cLI.appendChild(cLItext); cLI.onclick = function() {AfficheID(Cpt);} SecondUL.appendChild(cLI); } MainLI.appendChild(SecondUL); MainUL.appendChild(MainLI); document.appendChild(MainUL);
Comme vous pouvez le voir, je parcours un tableau Javascript, et à chaque ligne de ce tableau, je créer un élément de liste et affecte à la méthode "onclick()" une fonction. Mon souhaite, serais de passer en arguement de cette fonction l'ID de Tableau correspondant à l'élément. Au moment de l'execution du script, cet ID est donc représenté par la variable Cpt, le problème, c'est qu'une fois que le script est entièrement exécuté (et donc que je peux effectiver cliquer sur un élement de la liste), l'arguement qui est passé est toujours la dernière valeur qu'aura prit Cpt (en loccurence 2), mais jamais la valeur que Cpt avait au moment de la création de l'élément !
Comment faire pour que ce soit l'ID de mon élement qui passe en arguement ??? je ne peux bien sur par l'écrire en dur puisque je parcours le tableau pourtant, dès que je met une variable, cette variable étant commune à tous les élements (variable de la boucle de création des éléments) c'est systèmétiquement la dernière valeur de cette variable qui est passer...
sniff, plus, help...
merci par avance pour vos idées...
PS: ceci n'est pas l'intégralité de mon code, je l'ai allégé pour vous montrer le principal et surtout ce qui ne me va pas, aussi si j'ai fais une erreur de frappe ou que le code tel quel ne fonctionne pas exactement, ne vous inquiétez pas, il est là juste pour vous faire comprendre le contexte.
Partager