简单的javascript for循环不符合我认为应该的方式

时间:2013-05-04 18:38:13

标签: javascript google-maps

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

1 个答案:

答案 0 :(得分: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));
};