Je suis en train d'essayer d'ajouter un écouteur d'événements à plusieurs objets en utilisant une boucle for, mais je me retrouve avec tous les écouteurs ciblant le même objet --> le dernier.
Si j'ajoute les écouteurs manuellement en définissant boxa et boxb pour chaque instance, cela fonctionne. Je suppose que c'est la boucle for-loop addEvent qui ne fonctionne pas comme je l'espérais. Peut-être que j'utilise la mauvaise approche dans l'ensemble.
Exemple en utilisant 4 de la classe "container" Le déclenchement sur le conteneur 4 fonctionne comme prévu. Le déclenchement sur les contenurs 1,2,3 déclenche l'événement sur le conteneur 4, mais seulement si le déclencheur a déjà été activé.
// Fonction à exécuter au clic :
function makeItHappen(elem, elem2) {
var el = document.getElementById(elem);
el.style.backgroundColor = "red";
var el2 = document.getElementById(elem2);
el2.style.backgroundColor = "blue";
}
// Fonction d'auto-chargement pour ajouter les écouteurs :
var elem = document.getElementsByClassName("triggerClass");
for (var i = 0; i < elem.length; i += 2) {
var k = i + 1;
var boxa = elem[i].parentNode.id;
var boxb = elem[k].parentNode.id;
elem[i].addEventListener("click", function() {
makeItHappen(boxa, boxb);
}, false);
elem[k].addEventListener("click", function() {
makeItHappen(boxb, boxa);
}, false);
}
some text
some text
some text
some text