On ne peut pas passer de l'événement à la méthode addEventListener: fermeture de problème

Cela me rend fou... j'ai une boucle qui ajoute un écouteur d'événement pour un tel objet. L'objet est, pour la clarté de l'exposé, un petit cercle, et je dois ajouter mouseover et mouseout événements pour chacun des 10 cercles.

Mon premier problème est celui de la fermeture standard-portée chose parce que tous les auditeurs sont ajoutés dans la même boucle, ils voient la même invalide la valeur de la variable de boucle. Je peux résoudre ce problème, je pense, mais le deuxième problème est que j'ai passer "événement" pour les auditeurs, et je ne peux pas trouver un moyen de résoudre ces deux problèmes en même temps.

J'ai essayé différentes versions de ce:

for(month = 0; month < nMonths; month++) {
   ...
   shape.addEventListener(
     "mouseover", 
     (function(event, index) { popup_on(event, foo, index); })(event, month),
     false);
   group.appendChild(shape);
}

Cette version me donne de l'événement n'est pas défini". popup_on est le véritable gestionnaire, et de doit obtenir event et la valeur actuelle de month. Aucune idée de comment je dois faire? Merci.

OriginalL'auteur EML | 2012-01-03