gpt4 book ai didi

javascript - removeEventListener 没有按我的预期工作

转载 作者:行者123 更新时间:2023-12-02 21:17:50 31 4
gpt4 key购买 nike

我知道有类似问题的问题,但我不知道如何解决该问题。

我需要解决这个问题:我在 html 文档中添加了一个 onClick 监听器,然后,在 js 中我尝试删除它,但我不能。

这是我的代码:

<html>
<head>
</head>
<body>
<div id="my-div" style="background: green" onclick="increase(event)">
0
</div>

<script src="app.js"></script>
</body>
</html>

在 js 中:

function increase(event){

let div = document.getElementById( event.currentTarget.id );

let number = parseInt(div.innerHTML);
number += 5;

div.innerHTML = number;

div.removeEventListener('click', increase); //but it doesnt get removed...
}

这就像我无法定位 html 文件中添加的事件监听器。我怎样才能瞄准它?

最佳答案

设置的监听器不是 increase,它基本上是一个您没有引用的匿名函数 () => raise(event)

由于您将其设置为 onclick 属性,因此您需要做的就是 div.onclick = null

但是,最好一开始就不要使用 onclick,因为它依赖于全局范围内现有的函数,会妨碍代码和标记的正确分离,还会妨碍通过以下方式保护页面安全: CSP(内容安全策略)。

如果您要在 app.js 中调整事件监听器,如下所示...:

document.getElementById('my-div').addEventListener('click', increase)

...那么您用于删除监听器的现有代码就可以工作。

关于javascript - removeEventListener 没有按我的预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60920468/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com