2012-11-18 34 views
0

我有一個關於使用數組添加監聽器到谷歌地圖API標記的問題。看來我們不能直接使用迭代來添加監聽器,但可以調用一個函數來完成這個任務。我搜索互聯網,發現這是一個範圍問題。但我不明白是什麼原因。任何人都可以給我一個清晰的解釋?謝謝!使用數組添加監聽器在谷歌地圖

works version 
function updateM(m) { 
google.maps.event.addListener(m, 'click', function() { 
    infowindow.open(map,m); 
    }); 
} 
for(i=0;i<2;i++) 
{ 
marker[i].setMap(map); 
updateM(marker[i]); 
} 

and 

do not work version 
for(var i=0;i<2;i++) 
{ 
marker[i].setMap(map); 
google.maps.event.addListener(marker[i], 'click', function() { 
    infowindow.open(map,marker[i]); 
    }); 
} 


} 
+1

它在這裏解釋:http://econym.org.uk/gmap/closure.htm但這不是一個問題。 – Marcelo

回答

1

在JavaScript中沒有block範圍,只有function scope存在。因此,通過將addListners代碼包裝在一個新函數中,您可以確保"i"的值保持您的預期。

相關問題