gpt4 book ai didi

javascript - 在 Javascript 循环中附加监听器

转载 作者:行者123 更新时间:2023-12-01 03:41:40 25 4
gpt4 key购买 nike

我有一个对象(卡片)数组,其中包含 id , latitudelongitude 。然后,我构建了一组标记以附加到 GoogleMap map :

for(var c = 0; c < cards.length; c++)
{
var id = cards[c]["id"];
var lat = cards[c]["lat"];
var lon = cards[c]["lon"];

var marker = new google.maps.Marker({ position: new google.maps.LatLng(lat, lon)});
marker.setMap(map);
marker.addListener('click', function(){
myListenerCallback(id);
});
}

在每个标记上,我想在单击事件上附加一个回调。通过使用标记的 .addListener 可以很容易地完成此操作。方法。问题是,我想触发一个回调,其中包含卡的 id(作为输入参数):myListenerCallback(id) 。看起来所有回调都是使用数组的最后一个 id 触发的。如何触发传递相应 id 的回调?

最佳答案

这是因为当事件处理程序被触发时,循环已完成执行,并且 id 会使用数组的最后一个值进行更新。

您可以围绕事件处理函数创建一个闭包并传递id

for (var c = 0; c < cards.length; c++) {
//rest of the code
(function(id) {
marker.addListener('click', function() {
myListenerCallback(id);
});
}(id))
}

关于javascript - 在 Javascript 循环中附加监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43829981/

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