Gros soucis avec mon onclick. Je n'arrive pas à l'associer à mon élément
takinelinfo
Messages postés13Date d'inscriptionmardi 24 avril 2007StatutMembreDernière intervention 1 juillet 2008
-
1 juil. 2008 à 21:02
ralecul
Messages postés111Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention 1 août 2008
-
2 juil. 2008 à 18:43
Bonsoir,
Alors là j'ai un gros soucis avec le js. Tout d'abord voici le code simplifier au maximun:
function ChargeListeAcheteur()
{
var reponseXml = xmlHttpListeAcheteur.responseXML;
var rootXmlElement = reponseXml.documentElement;
var divParent=document.getElementById('acheteur_bloc_resultat_liste');
divParent.innerHTML="";
var table = document.createElement('table');
for(var i=0; i<(rootXmlElement.childNodes[1].childNodes).length;i++)
{
var id = rootXmlElement.childNodes[1].childNodes[i].childNodes[0].firstChild.data;
var ligne = table.insertRow(-1);
cell_nom = ligne.insertCell();
cell_nom.innerHTML=rootXmlElement.childNodes[1].childNodes[i].childNodes[1].firstChild.data;
function processChargeFicheAcheteur(elemt)
{
alert(elemt);
}
C'est très simple, je construit une liste de membre en ajax, et je voudrais associer une fonction à l'évènement onclick pour chaques individu afin de visualiser sa fiche.
Imaginons 3 membres, je voudrais
membre 1 -> id=1 -> onclick=processChargeFiche('1');
membre 2 -> id=2 -> onclick=processChargeFiche('2');
membre 3 -> id=6 -> onclick=processChargeFiche('6');
Mon premier alert est la pour vérifier si j'ai les bon id, j'obtiens:
1
2
6
-> ok
par contre ils ont tous onclick=processChargeFiche('6');, il prend en compte le dernier id pour tous les membres, c'est à dire que quelque soit le membre sur lequel je clique, je vois systematiquement la fiche du dernier membre.
J'obtiens donc à l'écran:
6
6
6
J'ai essayé:
cell_nom.onclick="processChargeFiche(id)";
cell_nom.onclick="processChargeFiche("+id+")";
J'ai essayé avec une variable superglobale mais sans succés.
A voir également:
Gros soucis avec mon onclick. Je n'arrive pas à l'associer à mon élément
Voici la solution la plus propre (qui n'ajoute pas d'attribut à l'élément).
cell_nom.onclick=funtion(index) { return function() { processChargeFiche(index); }(id);
Cette technique utilise une closure (voir google pour comprendre)
@+
PS: la réponse de l'autre post fonctionne, en revanche je n'ai pas pu tester celle-ci...