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());     
    })
}

这是我的代码。
显然这里有错误

新 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 回答