2017-04-10 62 views
0

我正在使用Google Maps JavaScript API將標記添加到地圖上。對於每個標記,我都將偵聽器添加到每個標記的點擊事件中。以下是我的代碼。Google地圖:將參數綁定爲單擊事件

for (var i = 0; i < markers.length; i++) { 
    var marker = addMarker(markers[0]); //The addMarker function contains the code to add the marker 

    marker.addListener('click', function() { 
     console.log(i); 
    }); 
} 

我也想給i參數去click事件綁定,這樣,當它激發我可以做一些與i值(我會改變這個以後是一個不同的變量)。然而,我點擊控制檯的哪個標記始終註銷i的最後一個值。

因此,對於循環的每次迭代,它將覆蓋click事件的回調。有誰知道我能如何解決這個問題?

+0

你應該換一個封閉 – Roljhon

+0

@Roljhon我不完全理解閉包內您的活動任務,你將能夠解釋一下嗎? – Pattle

回答

0

如果你想使用閉包,你可以這樣做。當您點擊時,這將保留i

請注意下面只是一個例子來指出這個想法。

var markers = ["marker1","marker2","marker3"]; 
 
for (var i = 0; i < markers.length; i++) { 
 

 
     var marker = addMarker(markers[i]); //The addMarker function contains the code to add the marker 
 
     (function(_i,marker){ 
 
     marker.addEventListener('click', function() { 
 
      alert(_i); 
 
     }); 
 
     })(i,marker) 
 
} 
 

 
function addMarker(marker){ 
 
    var elem = document.createElement('div'); 
 
    elem.id = marker; 
 
    elem.textContent = marker; 
 
    document.body.appendChild(elem); 
 
    return elem; 
 
}