0

我有一个关于使用数组将侦听器添加到谷歌地图 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]);
  });
}


}
4

1 回答 1

1

在 JavaScript 中没有block作用域,只有function scope存在。因此,通过将代码包装addListners在一个新函数中,您可以确保 的值"i"保持您的预期。

于 2012-11-19T08:16:23.883 回答