2010-11-12 39 views
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'屬性不再具有值。我該如何解決?

回答

0

也許你可以將url傳遞給調用addListener的函數

+0

謝謝!我現在做的是這樣的: (function(m,u){google.maps.event.addListener(m,'click',function(){window.location.href = u;})})(marker,標記[IDX] .URL); 它的工作原理!這真的是解決它的最好方法嗎? – Peter 2010-11-12 10:53:14

+0

我認爲如果您嘗試將其傳遞給其他函數(addListener方法內的函數) – 2010-11-15 15:15:13