简单的javascript for循环没有按照我认为的方式运行
simple javascript for loop not behaving the way I think it should
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
?
你必须私有化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));
};
相关文章:
- 如何加载/构建 Chrome 应用/扩展程序并以编程方式运行
- AJAX 以多线程方式运行
- 是什么导致这个JavaScript代码以它的方式运行
- 如何在Javascript中以过程化的方式运行一个又一个语句
- 以类似命令的方式运行 NodeApp
- 为什么我的保证金上限没有按应有的方式运行
- 以不同的方式运行JavaScript函数
- 以编程方式运行摩卡时的访问结果
- 优雅的方式运行大量异步“;事物;当总数为'直到第一个“;事物;退货
- Ember.js视图助手绑定没有按预期的方式运行
- {javascript} JS代码以意外的方式运行
- 简单的javascript for循环没有按照我认为的方式运行
- 有没有一种方法可以通过Firebug中的快捷方式运行JavaScript代码?
- 动画没有按照设定的方式运行
- 如何以编程方式运行node . js应用程序
- 为什么substring方法会以这种方式运行?
- Mocha:在以编程方式运行Mocha时获取stacktrace
- 是否可以将标志传递给 Gulp 以使其以不同的方式运行任务
- 画布绘制函数以异步方式运行
- OnSubmit 是按提交表单的每种方式运行,还是仅在单击“提交”按钮时运行