gpt4 book ai didi

javascript - 如何在循环内设置DomEvent

转载 作者:行者123 更新时间:2023-12-03 02:47:10 26 4
gpt4 key购买 nike

当我尝试为数组内的每个 DOM 对象设置 EventListenr 时遇到问题。我为每个 DomEvent 定义的函数对于所有这些都相同(console.log(key) 为所有项目打印相同的键(循环中的最后一个键))。我的代码是这样的:

var dom = {};
var popupContent = L.DomUtil.create('div');
for(var key in this._info){
dom[key] = L.DomUtil.create('a', "", popupContent);
dom[key].innerHTML = key;
dom[key].href = "#";
L.DomEvent.on(dom[key], 'click', function(){
//do some stuff
console.log(key);
});
}

var popup = L.popup();
popup.setLatLng(latlng)
.setContent(popupContent)
.openOn(this._map);

预先感谢您为我提供的任何帮助:)

最佳答案

这里的问题是循环内部的闭包函数。

你可以这样修复它:

for(var key in this._info){
(function(k) {
dom[k] = L.DomUtil.create('a', "", popupContent);
dom[k].innerHTML = key;
dom[k].href = "#";
L.DomEvent.on(dom[k], 'click', function(){
//do some stuff
console.log(k);
});
})(key)
}

或者您可以在循环中使用 let 而不是 var

欲了解更多信息,请查看this问题。

关于javascript - 如何在循环内设置DomEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48045584/

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