gpt4 book ai didi

javascript - 将事件分配给数组中的对象时绕过闭包

转载 作者:行者123 更新时间:2023-11-28 20:44:29 26 4
gpt4 key购买 nike

我想要完成的任务:
我有一个对象数组,每个对象都有一个 DOM 节点的引用,我用 .getNode() 调用它。我试图为数组中的每个对象分配一个事件处理程序,以便在单击时, alert() 为数组中的给定对象调用 .name

我尝试过的:
我已经用循环分配事件,但我在关闭方面遇到了麻烦。按照我现在的方式,所有对象共享相同的事件(循环中的最后一个),并且当单击时,所有对象都会给出相同的消息。

EventUtil 独立添加事件处理程序浏览器。它不应包含任何错误。

for (var i = 0; i < arrayWithObjects.length; i++) {
EventUtil.addHandler(arrayWithObjects[i].getNode(), "contextmenu", function(event){
event = EventUtil.getEvent(event);
event.preventDefault();
alert('right click on '+arrayWithObjects[i].name);
event.stopPropagation();
});
}

最佳答案

for (var i = 0; i < arrayWithObjects.length; i++) {
(function(i){

EventUtil.addHandler(arrayWithObjects[i].getNode(), "contextmenu", function(event){
event = EventUtil.getEvent(event);
event.preventDefault();
alert('right click on '+arrayWithObjects[i].name);
event.stopPropagation();
});

})(i)
}

i 是按值传递的,并且对于这个动态定义的函数来说是本地的,每次都会创建一个新的闭包。

关于javascript - 将事件分配给数组中的对象时绕过闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13732291/

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