gpt4 book ai didi

javascript - 匿名函数是否能够处理 removeEventListener?

转载 作者:行者123 更新时间:2023-11-30 12:00:55 26 4
gpt4 key购买 nike

考虑以下示例。我们有一个简单的 html 文件

<body>
<button id="button" type="button" onclick="create_button()">Create button</button>
</body>

和两个版本的js文件。版本一个:

function create_button() {
var new_button = document.createElement("Button");
new_button.innerHTML = "Pop the alert";
new_button.type = "button";
new_button.addEventListener('click', function () { my_function("you") });
new_button.removeEventListener('click', function () { my_function("you") });
document.body.appendChild(new_button);
};

function my_function(x) {
alert("I like " + x);
};

和版本。乙:

function create_button() {
var new_button = document.createElement("Button");
new_button.innerHTML = "Pop the alert";
new_button.type = "button";
function helper() {
my_function("you");
};
new_button.addEventListener('click', helper );
new_button.removeEventListener('click', helper );
document.body.appendChild(new_button);
};

function my_function(x) {
alert("I like " + x);
};

前者不行(实际上removeEventListener不行),后者不行。

所以我想问一下匿名函数是否有问题,或者是否有一些基本方面阻止了第一个代码的正确执行。

最佳答案

To remove event handlers, the function specified with the addEventListener() method must be an external function,… Anonymous functions, like "element.removeEventListener("event", function(){ myScript });" will not work.

http://www.w3schools.com/jsref/met_element_removeeventlistener.asp

注意:对于那些反对 w3school 的人,我知道答案,但在 MDN 中找不到合适的引用。

关于javascript - 匿名函数是否能够处理 removeEventListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36637197/

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