Salut !
Pour séparer le javascript du HTML, j'utilise addEventListener pour poser des évènements. Le soucis, c'est que cette méthode ne permet pas de passer de paramètres à la fonction qu'on attache à l'évènement, à moins de passer par une fonction anonyme. Mais on se heurte alors aux closures et au moment où l'évènement se déclenche, l'index passé a toujours la dernière valeur attribuée par la boucle.
Il me semblait avoir déjà trouvé, par hasard, un tuto expliquant comment passer un index de boucle à une fonction anonyme attachée a un évènement sans avoir de closure mais j'arrive pas à remettre la main dessus (si quelqu'un l'a déjà croisé, je suis preneur de l'adresse, doit y avoir plein d'autres trucs intéressants sur ce site).
Pour l'instant, mon code ressemble à ceci :
Donc toujours pas débarrassé du closure, inputs pointant sur la dernière ligne de la table et non sur la ligne courante, mais, au moins, j'ai pas de dépassement d'index.
Merci de votre aide ^^
Modifié par MacIntoc (14 Feb 2007 - 20:21)
Pour séparer le javascript du HTML, j'utilise addEventListener pour poser des évènements. Le soucis, c'est que cette méthode ne permet pas de passer de paramètres à la fonction qu'on attache à l'évènement, à moins de passer par une fonction anonyme. Mais on se heurte alors aux closures et au moment où l'évènement se déclenche, l'index passé a toujours la dernière valeur attribuée par la boucle.
Il me semblait avoir déjà trouvé, par hasard, un tuto expliquant comment passer un index de boucle à une fonction anonyme attachée a un évènement sans avoir de closure mais j'arrive pas à remettre la main dessus (si quelqu'un l'a déjà croisé, je suis preneur de l'adresse, doit y avoir plein d'autres trucs intéressants sur ce site).
Pour l'instant, mon code ressemble à ceci :
var lines=document.getElementById('virtualRootConstantes').getElementByTagName('table')[0].getElementsByTagName('tr');
for(var t=1; t<lines.length;t++){
var inputs=lines[t].getElementsByTagName('input');
lines[t].getElementsByClassName('save').addEventListener('click', function(){save(inputs)}, false);
}
Donc toujours pas débarrassé du closure, inputs pointant sur la dernière ligne de la table et non sur la ligne courante, mais, au moins, j'ai pas de dépassement d'index.
Merci de votre aide ^^
Modifié par MacIntoc (14 Feb 2007 - 20:21)