2013-11-04 169 views
1

我有以下代碼:javascript關閉不起作用?

for (var i in listings){ 
    var listing = listings[i]; 
    map.addMarker({ 
    lat: listing.GeographicLocation.Latitude, 
    lng: listing.GeographicLocation.Longitude, 
    title: listing.Title, 
    click: function(e){ 
     (function(listing){ 
     console.log(listing.Title); 
     })(listing); 
    }, 
    }); 
} 

當我點擊該標記時,我總是最後一個上市的稱號。

+1

清楚,我 - 提問是要求通過「我」是不是反映了認爲是由循環中設置的值設置日誌消息。 – LeeGee

回答

5
for (var i in listings) { 
    var listing = listings[i]; 
    map.addMarker({ 
    lat: listing.GeographicLocation.Latitude, 
    lng: listing.GeographicLocation.Longitude, 
    title: listing.Title, 
    click: (function (listing) { 
     return function(e) { 
     console.log(listing.Title); 
     }; 
    })(listing) 
    }); 
} 

你已經放錯了方向 - 它需要立即執行,而不是當點擊事件被調用時。

2

OK想通了:

for (var i in listings){ 
    var listing = listings[i]; 
    map.addMarker({ 
    lat: listing.GeographicLocation.Latitude, 
    lng: listing.GeographicLocation.Longitude, 
    title: listing.Title, 
    click: (function(listing){ 
     return function(e){ 
     console.log(listing.Title); 
     })(listing), 
    }); 
}