J'insère dynamiquement du code html dans le document (en utilisant obj.innerHTML + = 'some html'). Dans ce html, il y a des images avec des identifiants 'imageId_X' (ie imageId_1, imageId_2 ...). Cela fonctionne très bien, mais il y a quelque chose de mal avec le code suivant:bizarre problème javascript
for (var n = 0; n < pConfig.images.length; n++)
{
document.getElementById('imageId_' + n).onclick = function()
{
alert(n);
}
}
Il y a 4 éléments dans les pConfig.images et d'alerte (n) avertit toujours 4. Pourquoi est-ce qui se passe, ce que je fais mal?
À part le problème de boucle de fermeture: ** n'utilisez pas ** innerHTML + = '. Cela implique de sérialiser le contenu DOM existant de l'élément dans une chaîne HTML, de l'ajouter à la chaîne, puis de tout réécrire dans de nouveaux objets DOM. Cette opération est lente et perd toute information non sérialisable dans le processus, y compris les valeurs de champ de formulaire, les références JavaScript ou les gestionnaires d'événements. – bobince