[Ajax] Prob passage de param. dans boucle [DOM]
Quelle galère pour trouver un titre convenable :|
Enfin pour bien vous exposer mon problème, voici mon code :
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
|
//recuperation des infos
DocXML=prods.responseXML;
nom_cat=DocXML.getElementsByTagName("categorie")[0].firstChild.data;
nom_scat=DocXML.getElementsByTagName("souscategorie")[0].firstChild.data;
var titres=document.createElement("div");
titres.innerHTML="<h3><u>"+nom_cat+"</u></h3><h4>"+nom_scat+"</h4>";
var produits=document.createElement("div");
for(i=0;i<DocXML.getElementsByTagName("produit").length;i++)
{
var id_prod=DocXML.getElementsByTagName("produit")[i].getAttribute("id");
var nom_prod=DocXML.getElementsByTagName("produit")[i].getAttribute("nom");
var prod=document.createElement("div");
prod.setAttribute("id","prod-"+id_prod);
prod.onmouseover=function () { showDetailsProd(id_prod);}
prod.onmouseout=function () { hideDetailsProd(); }
prod.setAttribute("class","prod");
prod.className="prod";
prod.innerHTML=nom_prod+" "+id_prod;
produits.appendChild(prod);
}
$('content').innerHTML="";
$('content').appendChild(titres);
$('content').appendChild(produits); |
Bon bah voila l'ennui c'est avec ma variable id_prod :/
Edit: résolu mon pb de drag, enfin +/- :/
et pire encore ! showDetailsProd recoit 4 en paramètre quel que soit le produit sur lequel je passe la souris :s
(dans mon exemple je n'ai que 4 produits si vous n'aviez pas compris :) )
Bref, je ne comprends pas, pourquoi au meme endroit du code, une variable prends apparemment 2 valeurs différentes :s
J'ai essayé de changer id_prod par un truc totalement absurde pour etre sur que ca ne soit pas une variable de meme nom ailleurs, et je garde le meme bug :s
Help plz :(
Re: [Ajax] Prob passage de param. dans boucle [DOM]
Citation:
Envoyé par narnou
Bon bah voila l'ennui c'est avec ma variable id_prod :/
C'est un problème 'classique' d'affectation dynamique. C'est pas du tout lié au fait qu'il y ait du Ajax...
Voyons voir, quelle était la solution déjà :)
Alors, je pense que si tu fais:
Code:
1 2
|
prod.onmouseover="showDetailsProd("+id_prod+")"; |
Ca devrait marcher. C'est moins beau, mais il devrait prendre la valeur de la variable au bon moment.
Tout ton problème, c'est qu'il n'évalue pas la valeur de id_prod au moment de mettre en place le onmouseover, il n'évalue la variable qu'au moment d'executer la fonction. Et là, forcément, à ce moment elle vaut 4.
Pourquoi pas encore plus simplement:
Code:
1 2
|
prod.onmouseover=function () { showDetailsProd(this.id);} |
Il ne reste plus qu'à faire un substring dans showDetailsProd pour virer le prod- qui est devant ton numéro d'identifiant....