11548 sujets

JavaScript, DOM et API Web HTML5

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;
	
		alert(id);
		cell_nom.onclick=function(){ processChargeFiche(id); };				
	}
	divParent.appendChild(table);
}

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

a écrit :
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:
a écrit :
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:
a écrit :
6
6
6


a écrit :
J'ai essayé:
cell_nom.onclick="processChargeFiche(id)";
cell_nom.onclick="processChargeFiche("+id+")";
J'ai essayé avec une variable superglobale mais sans succés.
[/i][/i]
dans un for id aura la valeur de la derniere reference, il te suffit de creer une fonction qui te retourne une fonction Smiley lol


cell_nom.onclick=function(theId){ 
    return function() {
         processChargeFiche(theId); 
    };
}(id);