我有一个关于使用数组在谷歌地图api中添加监听器到标记的问题。看来我们不能直接使用迭代来添加监听器,但可以调用一个函数来做到这一点。我搜索互联网,发现这是一个范围问题。但我不明白是什么原因。谁能给我一个明确的解释?谢谢!
works version
function updateM(m) {
google.maps.event.addListener(m, 'click', function() {
infowindow.open(map,m);
});
}
for(i=0;i<2;i++)
{
marker[i].setMap(map);
updateM(marker[i]);
}
and
do not work version
for(var i=0;i<2;i++)
{
marker[i].setMap(map);
google.maps.event.addListener(marker[i], 'click', function() {
infowindow.open(map,marker[i]);
});
}
}
答案 0 :(得分:1)
在JavaScript中,没有block
范围,只有function scope
存在。因此,通过将addListners
代码包装在新函数中,可以确保"i"
的值保持不变。