Javascript multiples dynamique addEventListener créé en de la boucle - passant des paramètres ne fonctionne pas

Je veux utiliser des écouteurs d'événement pour empêcher la remontée d'événements sur une div dans une div avec onclick fonctions. Cela fonctionne, en passant des paramètres de la façon dont j'ai prévu:

<div onclick="doMouseClick(0, 'Dog', 'Cat');" id="button_id_0"></div>
<div onclick="doMouseClick(1, 'Dog', 'Cat');" id="button_id_1"></div>
<div onclick="doMouseClick(2, 'Dog', 'Cat');" id="button_id_2"></div>

<script>
function doMouseClick(peram1, peram2, peram3){
    alert("doMouseClick() called AND peram1 = "+peram1+" AND peram2 = "+peram2+" AND peram3 = "+peram3);
}
</script>

Cependant, j'ai essayé de créer plusieurs écouteurs d'événement dans une boucle avec ceci:

<div id="button_id_0"></div>
<div id="button_id_1"></div>
<div id="button_id_2"></div>

<script>
function doMouseClick(peram1, peram2, peram3){
    alert("doMouseClick() called AND peram1 = "+peram1+" AND peram2 = "+peram2+" AND peram3 = "+peram3);
}

var names = ['button_id_0', 'button_id_1', 'button_id_2'];

    for (var i=0; i<names.length; i++){

        document.getElementById(names[i]).addEventListener("click", function(){
        doMouseClick(i, "Dog", "Cat");

    },false);

}

</script>

Correctement attribue la fonction de clic à chaque div, mais le premier paramètre pour chaque, peram1, est 3. Je m'attendais à 3 différents gestionnaires d'événements de toutes de passage les différentes valeurs de i pour peram1.

Pourquoi est-ce arrivé? Sont les gestionnaires d'événement sont pas tous distincts?

InformationsquelleAutor KDawg | 2013-01-05