我使用Google Maps JavaScript API将标记添加到地图上。对于每个标记,我在每个标记上添加一个监听器。以下是我的代码。
for (var i = 0; i < markers.length; i++) {
var marker = addMarker(markers[0]); //The addMarker function contains the code to add the marker
marker.addListener('click', function() {
console.log(i);
});
}
我还想将i
param绑定到click事件,以便在它触发时我可以使用i
中的值执行某些操作(我将此更改为另一个变量后来)。然而,我点击控制台上的哪个标记始终会记录i的最后一个值。
因此,对于循环的每次迭代,它都会覆盖click事件的回调。有谁知道我怎么解决这个问题?
答案 0 :(得分:0)
如果你想使用闭包,你可以这样做。当您执行单击时,这将保留i
。
请注意,下面只是一个指出这个想法的例子。
var markers = ["marker1","marker2","marker3"];
for (var i = 0; i < markers.length; i++) {
var marker = addMarker(markers[i]); //The addMarker function contains the code to add the marker
(function(_i,marker){
marker.addEventListener('click', function() {
alert(_i);
});
})(i,marker)
}
function addMarker(marker){
var elem = document.createElement('div');
elem.id = marker;
elem.textContent = marker;
document.body.appendChild(elem);
return elem;
}
&#13;