0
我的問題是使用Google Maps API,但我確定它是一個通用的JavaScript問題。如何在事件偵聽器中使用局部變量?
我有一個本地數組定義一系列標記。處理這些對象是沒有問題的。但是我想在我創建的事件處理程序中使用其中的一個值,並且在調用事件處理程序時該值始終爲「未定義」。 (這是合乎邏輯的,因爲價值是當地的一個陣列的一部分,但我不知道我怎麼能解決這個問題。)
代碼:
var markers = [
{ lat: 58, lng: 07, title: 'Marker 01', url: 'article.aspx' },
.... /* etc */
]
for (var idx in markers) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(markers[idx].lat, markers[idx].lng),
title: markers[idx].title,
map: map
});
google.maps.event.addListener(marker, 'click', function() {
window.location.href = markers[idx].url;
});
}
當我點擊的標誌之一在最終地圖(即觸發'click'偵聽器)中,我被重定向到一個名爲'undefined'的頁面,因爲'url'屬性不再具有值。我該如何解決?
謝謝!我現在做的是這樣的: (function(m,u){google.maps.event.addListener(m,'click',function(){window.location.href = u;})})(marker,標記[IDX] .URL); 它的工作原理!這真的是解決它的最好方法嗎? – Peter 2010-11-12 10:53:14
我認爲如果您嘗試將其傳遞給其他函數(addListener方法內的函數) – 2010-11-15 15:15:13