1. ホーム
  2. javascript

[解決済み] JavascriptのremoveEventListenerが動作しない

2023-01-20 22:14:01

質問

以下のようなコードで、イベントリスナーを追加しています。

 area.addEventListener('click',function(event) {
              app.addSpot(event.clientX,event.clientY);
              app.addFlag = 1;
          },true);

これは予想通り正しく動作しています。その後、別の関数で次のコードを使ってイベントリスナーを削除しようとしました。

 area.removeEventListener('click',function(event) {
              app.addSpot(event.clientX,event.clientY);
              app.addFlag = 1;
          },true);

しかし、リスナーは削除されません。なぜでしょうか?私のremoveEventListener()に何か問題があるのでしょうか? 注:このエリアはdocument.getElementById('myId')のようなものです。

どのように解決するのですか?

これは、2つの無名関数が全く別の関数であることが原因です。あなたの removeEventListener の引数は、以前に添付された関数オブジェクトへの参照ではありません。

function foo(event) {
              app.addSpot(event.clientX,event.clientY);
              app.addFlag = 1;
          }
 area.addEventListener('click',foo,true);
 area.removeEventListener('click',foo,true);