2

重複の可能性:
ループ内の Javascript クロージャー - 簡単な実用例 ループ内
での JavaScript クロージャーの使用について説明してください

for (var i = 0; i < pois.length; i++) {
    pois[i].marker.addEventListener('dblclick', function (data) {
        var infoWindow = new BMap.InfoWindow(pois[i].address, opts);  
        map.openInfoWindow(infoWindow, map.getCenter());     
    })
}

これは私のコードです。
明らかにここにエラーがあります

new BMap.InfoWindow(pois[i].address, opts);

pois[i].marker リスナー関数で pois[i].address を使用するにはどうすればよいですか?

4

1 に答える 1

2
for (var i = 0; i < pois.length; i++) {
    setupEventListener(pois[i]);
}

function setupEventListener(obj) {
    var address = pois[i].address;
    obj.marker.addEventListener('dblclick', function (data) {
        var infoWindow = new BMap.InfoWindow(address, opts);  
        map.openInfoWindow(infoWindow, map.getCenter());     
    });
}
于 2012-10-16T07:00:07.793 に答える