為什麼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中文網其他相關文章!