Bonjour à tous,

Je savais déjà que l'on en pouvais pas assigner de fonction avec paramètre sur les onclick d'éléments HTML de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
monElement.onclick = maFonction(param);
Ce qui execute la fonction.

J'ai donc cherché et vu que l'on pouvais faire comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
monElement.onclick = function() { maFonction(param); }
Ce qui marche pour un paramètre fixe, mais qui se gâte lorsque l'on veut faire changer le paramêtre en fonction de l'élement sur lequel on applique le onclick.

Voici ma situation :
Je possède un tableau d'élement HTML.
Je possède également une fonction qui prend en paramêtre l'indice de l'élement dans ce tableau.
Je voudrais, pour assigner à tous mes élements de mon tableau une fonction onclick faire quelque chose dans le genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
for(i in monTableauDElement)
{
   monTableauDElement[i].onclick = function() { maFonction(i); };
}
Ce code fonctionne, pas de bug à l'execution, mais pas comme je le veux.
En effet, la valeur de i changeant tout au long de la boucle, tous mes élements finissent par appeler ma fonction avec comme paramêtre le i le plus grand.

En pratique au lieu d'avoir ça (résultat attendu) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
monTableauDElement[0] = function() { maFonction(0); };
monTableauDElement[1] = function() { maFonction(1); };
monTableauDElement[2] = function() { maFonction(2); };
monTableauDElement[3] = function() { maFonction(3); };
J'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
monTableauDElement[0] = function() { maFonction(3); };
monTableauDElement[1] = function() { maFonction(3); };
monTableauDElement[2] = function() { maFonction(3); };
monTableauDElement[3] = function() { maFonction(3); };
J'ai essayé plein de bidouilles avec des eval, mais impossible de garder fixe mon i pour chacun de mes élements.

Voila tout mon problème, j'espère avoir été le plus clair possible. Si vous ne comprenez pas un point faites le moi savoir.
Si quelqun à une réponse ou un début de piste je suis preneur !!

Merci d'avance.