Changer plusieur overlib avec une boucle

gnomesgames Messages postés 84 Statut Membre -  
gnomesgames Messages postés 84 Statut Membre -
Bonjour à tous,

J'utilise overlib pour afficher des information sur chaque case d'un tableau de 9x9, les cases de ce tableau sont mise à jour a l'aide d'une requête vers une page php, qui renvoit un fichier xml.
Je récupère ce fichier xml dans une fonction et réassigne chaque valeur au différentes cases du tableau, le problème est que quand je tente de mettre à jour les overlib dans la fonction à l'aide de ce code :

Texteaff=posx+"&nbsp;x&nbsp;"+posy+"&nbsp;("+items.item(3).firstChild.data+")<br>"+items.item(4).firstChild.data;
document.getElementById('div_'+(affx*10+affy)).onmouseover=function() { overlib(Texteaff,WIDTH, 60);}


Dans lequel Texteaff change à chaque boucle (ainsi que toute les variable présente).

Le problème est que quand le chargement est terminé, tout les overlib ce retrouvent avec comme valeur la valeur de l'overlib de la dernière case mise à jour ! Je crois que la commande place bien "overlib(Texteaff,WIDTH,60);" dans la page mais laisse Texteaff tel quel sans le remplacer par sa valeur ...

Sauriez vous comment faire ?
A voir également:

1 réponse

gnomesgames Messages postés 84 Statut Membre 17
 
Bon , j'ai trouvé comment faire... En gros, si vous faites une boucle dans une fonction comme ceci :

function boucle()
for(x=1;x<9;x++)
{
   mavar=x;
   overlib(mavar);
}


et bien a chaque fois il va réutiliser le même "mavar" et overlib va aller chercher ça valeur pour l'afficher et donc va tomber sur 8 (la dernière valeur de la boucle...)

Pour contrer ça, il faut transformer la fonction en fonction récursive !

function boucle(x)
{
   mavar=x;
   overlib(mavar);
   if(x<8){x++;boucle(x);}
}


Cela va faire que chaque "instance" de la fonction va posséder son propre "mavar" et son propre overlib liés, résultat , l'overlib ne va voir que le "mavar" de sont instance et va bien afficher la valeur voulu ...

J'espère que ça va aider des gens , même si apparemment les gens n'aime pas trop les casse tete en js ^^ !
1