ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で同じクラスを持つ複数の要素にクリック イベント リスナーを適切にアタッチするにはどうすればよいですか?

JavaScript で同じクラスを持つ複数の要素にクリック イベント リスナーを適切にアタッチするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-30 14:02:10570ブラウズ

How to Properly Attach a Click Event Listener to Multiple Elements with the Same Class in JavaScript?

クラスのクリック用の JavaScript イベント リスナー

クリック イベント リスナーをクラスにアタッチするには、addEventListener() メソッドを使用できます。このメソッドは 3 つの引数を取ります:

  • イベント タイプ (例: 'click')
  • リスナー関数
  • オプションのキャプチャ フラグ (通常は false)

この例では、addEventListener() メソッドを正しく使用しています。ただし、次の 2 つの問題があります:

1.要素選択の間違い

document.getElementsByClassName("classname") を使用してクラス要素を選択しています。これは、HTMLCollection または NodeList (内容に応じて) を返します。ブラウザ)。これらは配列ではないため、配列括弧表記を使用してイベント リスナーを各クラス要素に直接接続することはできません。

2.イベント リスナー関数エラー

イベント リスナー関数で、クラス要素にアタッチするときに呼び出しています。これは、リスナーが追加されると関数がすぐに実行されることを意味します。代わりに、関数を呼び出さずに参照として渡す必要があります:

classname.addEventListener('click', myFunction, false);

修正されたコード

修正されたコードは次のとおりです:

var elements = document.getElementsByClassName("classname");

var myFunction = function() {
    var attribute = this.getAttribute("data-myattribute");
    alert(attribute);
};

for (var i = 0; i < elements.length; i++) {
    elements[i].addEventListener('click', myFunction, false);
}

このコードは、各クラス要素にイベント リスナーを正しく追加し、要素がクリックされたときに提供された関数をトリガーし、要素のアラート内の data-myattribute 属性値。

以上がJavaScript で同じクラスを持つ複数の要素にクリック イベント リスナーを適切にアタッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。