为什么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中文网其他相关文章!