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 :
Ce qui execute la fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 monElement.onclick = maFonction(param);
J'ai donc cherché et vu que l'on pouvais faire comme ça :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 monElement.onclick = function() { maFonction(param); }
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 :
Ce code fonctionne, pas de bug à l'execution, mais pas comme je le veux.
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); }; }
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) :
J'ai :
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 essayé plein de bidouilles avec des eval, mais impossible de garder fixe mon i pour chacun de mes élements.
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); };
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.
Partager