将事件侦听器添加到 JavaScript 对象
Add event listener to JavaScript object
我正在从数据库中取回 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);
});
}
addListener
正在为每个丢弃的引脚添加一个 'click' 侦听器,这很好。问题是它应该提醒每个对象,但它只提醒我在单击每个图钉时从数据库中检索到的最后一个对象。
试着像这样做循环..
for (i = 0; i < objectLn; i++) {
(function(eachObject){
// copy the loop contents here. eachObject is already defined.
})(objects[i]);
}
我正在从数据库中取回 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);
});
}
addListener
正在为每个丢弃的引脚添加一个 'click' 侦听器,这很好。问题是它应该提醒每个对象,但它只提醒我在单击每个图钉时从数据库中检索到的最后一个对象。
试着像这样做循环..
for (i = 0; i < objectLn; i++) {
(function(eachObject){
// copy the loop contents here. eachObject is already defined.
})(objects[i]);
}