我从数据库中获取了一系列javascript对象。我循环遍历该数组并创建要在屏幕上显示的对象。我试图对每个对象使用.addEventListener(),但我才意识到.addEventListener()仅适用于DOM对象。
我怎样才能为每个javascript对象添加一个事件监听器?谢谢!
修改
根据要求,这是我的代码:
var objects = JSON.parse(data.responseText);
var i;
var objectLn = objects.length;
for (i = 0; i < objectLn; i++) {
//Puts each object into a variable
var eachObject = objects[i];
//Establishes pin position
var pinPos = {
lat: parseFloat(eachObject.lat),
lng: parseFloat(eachObject.lng)
};
//Creates new icon for pin
var icon = {
url: "path/to/img",
scaledSize: new google.maps.Size(60, 60),
origin: null,
anchor: null
};
//Creates a new pin from pulled information
var pin = new google.maps.Marker({
position: pinPos,
map: map,
icon: icon
});
//Alerts each object on click
pin.addListener('click', function() {
alert(JSON.stringify(eachObject));
map.panTo(pinPos);
map.setCenter(pinPos);
});
}
addListner正在添加一个&#39;点击&#39;监听每个掉落的引脚,这样做很好。问题是它应该警告每个对象,但它只警告我在每个点击的数据库中从数据库中检索的最后一个对象。
答案 0 :(得分:1)
尝试像这样做你的循环..
for (i = 0; i < objectLn; i++) {
(function(eachObject){
// copy the loop contents here. eachObject is already defined.
})(objects[i]);
}