私たちはこのオープンソースプロジェクトを世界中の人々に提供したいと考えています。このチュートリアルの内容をあなたが知っている言語に翻訳するのを手伝ってください。
レッスンに戻る

どのハンドラが実行されますか?

重要性: 5

変数の中にボタンがあります。そこにはハンドラはありません。

次のコードの後クリックするとどのハンドラが実行されるでしょう?どのアラートが表示されますか?

button.addEventListener("click", () => alert("1")); button.removeEventListener("click", () => alert("1")); button.onclick = () => alert(2);

答え: 12.

最初のハンドラは実行されます、 removeEventListener で削除されていないからです。 ハンドラを削除するには、割り当てたものと全く同じ関数を渡す必要があります。また、コード内に新しい関数が渡されます。これは同じように見えますが、別の関数です。

関数オブジェクトを削除するためには、このように参照を保持しなければなりません。:

function handler() { alert(1); } button.addEventListener("click", handler); button.removeEventListener("click", handler);

ハンドラ button.onclickaddEventListener に加えて、独立して動作します。