「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > For ループ内のイベント リスナーが最後のオブジェクトをターゲットにするのはなぜですか?

For ループ内のイベント リスナーが最後のオブジェクトをターゲットにするのはなぜですか?

2024 年 12 月 12 日に公開
ブラウズ:611

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

addEventListener For ループの使用と値の受け渡し

for ループを使用してイベント リスナーを複数のオブジェクトに追加すると、最後のオブジェクトが次のようになります。すべてのリスナーの再配置のターゲット。この記事ではこの問題に対処し、クロージャを使用した修正コードを提供します:

問題の概要:

ループを使用して複数のオブジェクトにイベント リスナーを追加しようとしていますが、最終的には、すべてのリスナーが同じオブジェクト (最後のオブジェクト) をターゲットとします。

修正コード:

クロージャは、この種の問題を防ぐ方法です。変更されたコードは次のとおりです:

// 函数在点击时运行:
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 
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3