首頁  >  文章  >  web前端  >  為什麼我的 JavaScript `removeEventListener` 不行?

為什麼我的 JavaScript `removeEventListener` 不行?

DDD
DDD原創
2024-11-02 03:08:03247瀏覽

Why Isn't My JavaScript `removeEventListener` Working?

為什麼Javascript的removeEventListener不起作用?

當使用者嘗試刪除事件監聽器時,可能會遇到困難,從而導致是否可以刪除事件監聽器的問題。它們的實施有問題。為了解決這個問題,讓我們分析一下提供的程式碼。

在給定的範例中,事件偵聽器附加到名為 area 的元素以用於按一下事件。但是,稍後嘗試在另一個函數中刪除偵聽器時,它無法刪除。

此失敗的原因在於傳遞給 addEventListener 和 removeEventListener 的兩個匿名函數是不同的函數。雖然兩者都處理區域上的單擊事件,但它們不是同一個函數物件。因此,使用 addEventListener 中相同的匿名函數來引用刪除事件偵聽器將無法運作。

要解決此問題,必須使用相同的匿名函數參考來新增和刪除事件偵聽器。這可確保 removeEventListener 函數可以正確定位並刪除先前新增的特定偵聽器。

以下是更正後的程式碼片段範例:

<code class="javascript">function foo(event) {
     app.addSpot(event.clientX,event.clientY);
     app.addFlag = 1;
 }
 area.addEventListener('click',foo,true);
 area.removeEventListener('click',foo,true);</code>

透過使用像foo 這樣的命名函數作為事件處理程序,可以引用相同的函數物件來新增和刪除事件偵聽器,從而確保在需要時正確刪除偵聽器。

以上是為什麼我的 JavaScript `removeEventListener` 不行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn