2012-02-24 73 views
-1

有一个循环来设置地图上的标记:JavaScript的循环奇怪执行

for (i = 0; i <= 6; i++) { 
    _coord = prj_markers[i]; 
    alert(i); 
    instance.set_marker(instance, provider, i, _coord, divBlock); 
} 

此代码警报“0”一次,做instance.set_marker(因为它可见)。执行instance.set_marker后

设置提醒:

for (i = 0; i <= 6; i++) { 
    _coord = prj_markers[i];   
    instance.set_marker(instance, provider, i, _coord, divBlock); 
    alert(i); 
} 

警报 “6” 一次,但它必须在6次警报。这是怎么回事 ?

+0

我们需要更多的代码。 instance.set_marker中发生了什么? – zatatatata 2012-02-24 07:53:10

+0

如果你将两个警报放在你的代码中呢? – penartur 2012-02-24 07:54:35

+0

instance.set_marker中必须有一些东西,它的代码是什么? – Vikram 2012-02-24 07:54:47

回答

0

尝试在您的for语句的开头声明您的初始变量。

for (var i = 0; ... 
+0

就是这样。谢谢 – vathsven4 2012-02-24 08:30:26

0

for循环使用i作为一个全局变量,因此,如果您instance.set_marker功能也使用i作为一个全局变量,并将其值设置的东西大于6退出循环。

尝试改变变量名,并通过使用var声明使其成为一个局部变量:

for (var SomeOtherName = 0; SomeOtherName<= 6; SomeOtherName++) { 
    _coord = prj_markers[SomeOtherName];   
    instance.set_marker(instance, provider, SomeOtherName, _coord, divBlock); 
    alert(SomeOtherName); 
}