0
for (var i=0; i<Gmaps.map.markers.length; i++) {
  google.maps.event.addListener(Gmaps.map.markers[i].serviceObject, 'click', function(object){
    alert(Gmaps.map.markers[i]); 
  });
};

所以,这会通过循环。显然,我将它与谷歌地图 API 一起使用。地图上的每个标记都附有警报。警报undefined虽然显示。如果我将它切换到alert(Gmaps.map.markers[0]);或任何其他适用的数字,它会向我显示 Object 对象,因为它应该。如果我随后调用alert(Gmaps.map.markers[i].id);或类似的操作,我会得到我正在寻找的值,但显然,每个标记都会发出相同的警报。

为什么i回调中没有被识别?

4

1 回答 1

1

您必须将 i 私有化:

for (var i=0; i<Gmaps.map.markers.length; i++) {
 (function(i){
  google.maps.event.addListener(Gmaps.map.markers[i].serviceObject, 'click', function(object){
    alert(Gmaps.map.markers[i]); 
  });
 }(i));
};
于 2013-05-04T18:39:11.003 回答