ホームページ >ウェブフロントエンド >jsチュートリアル >イベント リスナーをクラスに追加するときに「classname.addEventListener(\'click\', myFunction(), false);」が機能しないのはなぜですか?
クリック時にクラス属性値をキャプチャする探求中に、JavaScript コードで問題が発生した可能性があります。具体的には、 classname.addEventListener('click', myFunction(), false); という行です。要素のイベント リスナーの登録に失敗します。
この問題に対処するには、コードを段階的に分析してみましょう:
修正されたコード:
問題に対処するには、getElementsByClassName によって返される各要素にイベント リスナーを正しくアタッチする必要があります。 。修正されたコードは次のとおりです:
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); }
修正の説明:
ES6 では、ループとイベント リスナーの追加をより簡潔に行うことができます。
Array.from(elements).forEach(function(element) { element.addEventListener('click', myFunction); });
IE6-8 などの古いブラウザの場合は、次の存在を確認することを検討してください。使用する前に getElementsByClassName を取得してください。
以上がイベント リスナーをクラスに追加するときに「classname.addEventListener(\'click\', myFunction(), false);」が機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。