我正在做一些测试并遇到了这种奇怪的情况:第一种情况(在循环中分配像 InfoWindows 这样的对象)没有按预期工作,而一个一个地编写分配确实有效。
当鼠标悬停在标记上时,预期的行为是信息窗口打开。许多窗户应该同时保持打开状态。
从表面上看,我看不出有什么区别。这是怎么回事?我为每个案例展示了相关代码和完整的 JSFiddle。
不工作 JSFiddle
iwArray = [];
for (var i = 0; i < 3; i++) {
iwArray[i] = new google.maps.InfoWindow({content: "w "});
google.maps.event.addListener(marker[i], 'mouseover', function(e) {
iwArray[i].open(map, this);
});
}
有效,但丑陋的 JSFiddle
iwArray = [];
iwArray[0] = new google.maps.InfoWindow({content: "w 0"});
google.maps.event.addListener(marker[0], 'mouseover', function(e) {
iwArray[0].open(map, this);
});
iwArray[1] = new google.maps.InfoWindow({content: "w 1"});
google.maps.event.addListener(marker[1], 'mouseover', function(e) {
iwArray[1].open(map, marker[1]);
});
iwArray[2] = new google.maps.InfoWindow({content: "w 2"});
google.maps.event.addListener(marker[2], 'mouseover', function(e) {
iwArray[2].open(map, marker[2]);
});