Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum zielen Ereignis-Listener in einer For-Schleife auf das letzte Objekt ab?

DDD
Freigeben: 2024-11-11 13:06:02
Original
807 Leute haben es durchsucht

Why Do Event Listeners in a For Loop Target the Last Object?

addEventListener mithilfe einer For-Schleife und Übergeben von Werten

Bei Verwendung einer for-Schleife zum Hinzufügen von Ereignis-Listenern zu mehreren Objekten wird häufig das letzte Objekt verwendet Das Ziel für alle Listener-Verlagerungen. Dieser Artikel wird dieses Problem lösen und einen korrigierten Code mithilfe von Abschlüssen bereitstellen:

Problemübersicht:

Es wird versucht, eine Schleife zu verwenden, um Ereignis-Listener zu mehreren Objekten hinzuzufügen, aber letztendlich Alle Listener zielen auf dasselbe Objekt (das letzte).

Korrekturcode:

Abschluss ist eine Möglichkeit, solchen Problemen vorzubeugen. Der geänderte Code lautet wie folgt:

// 函数在点击时运行:
function makeItHappen(elem, elem2) {
    var el = document.getElementById(elem);
    el.style.backgroundColor = "red";
    var el2 = document.getElementById(elem2);
    el2.style.backgroundColor = "blue";
}

// 自动加载函数以添加侦听器:
var elem = document.getElementsByClassName("triggerClass");

for (var i = 0; i < elem.length; i += 2) {
    (function () {
        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);
    }()); // 立即调用
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum zielen Ereignis-Listener in einer For-Schleife auf das letzte Objekt ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage