2012-02-24 108 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); 
}