gpt4 book ai didi

javascript - 向标记添加监听器在循环中不起作用

转载 作者:行者123 更新时间:2023-11-30 13:19:20 28 4
gpt4 key购买 nike

我试图在循环中向标记添加监听器,但它不起作用。

单独添加它们时有效。像这样:

    google.maps.event.addListener(markersArr[0], 'click', function() {
infoWindowArr[0].disableAutoPan=true;
infoWindowArr[0].open(map,markersArr[0]);
});

google.maps.event.addListener(markersArr[1], 'click', function() {
infoWindowArr[1].disableAutoPan=true;
infoWindowArr[1].open(map,markersArr[1]);
});

但是在循环中添加时,点击标记不会弹出信息窗口。

        for (var u=0; u<2; u++){
google.maps.event.addListener(markersArr[u], 'click', function() {
infoWindowArr[u].disableAutoPan=true;
infoWindowArr[u].open(map,markersArr[u]);
});

谁能解释一下如何让它循环工作?

最佳答案

您的问题是监听器函数引用了 u 变量,该变量在外部作用域中定义,并在函数外部发生更改,即在您的监听器运行时,它将看到 u == 2,因为循环已经完成。

您可以将您的监听器包装在另一个闭包中:

function makeListener(index) {
return function() {
infoWindowArr[index].disableAutoPan=true;
infoWindowArr[index].open(map,markersArr[index]);
}
}

for (var u=0; u<2; u++){
google.maps.event.addListener(markersArr[u], 'click', makeListener(u));
}

关于javascript - 向标记添加监听器在循环中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10851832/

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