可能重复:
Looping through Markers with Google Maps API v3 Problem
我有一个循环,我从数组元素中提取一些数据,然后为每次迭代添加一个事件监听器。但我需要将这些值传递给每个关联的侦听器,但最终我只在侦听器中只有最后一个数组项值。我试图从"this"理解,但解决方案似乎不适合我的情况而且我很困惑。这是我的代码:
for(var i=0;i<route.length;i++)
{
var input= route[i];
var sdata= input.split("@",19)
//Some code
google.maps.event.addListener(marker,'click',showiwindow);
}
function showiwindow(event)
{
var input= event.latLng;
//some code
...
document.getElementById('<%= lbl1.ClientID %>').innerHTML = sdata[1];
document.getElementById('<%= lbl2.ClientID %>').innerHTML = sdata[2];
document.getElementById('<%= lbl3.ClientID %>').innerHTML = sdata[3];
document.getElementById('<%= lbl4.ClientID %>').innerHTML = sdata[4];
......
}
当我点击标记时,我只获得最后一次迭代的值。回到该链接中的解决方案,如何将数组与i
的迭代值一起传递。请参考我的意思链接。
答案 0 :(得分:4)
这样的事情怎么样?
for(var i=0;i<route.length;i++)
{
var input= route[i];
var sdata= input.split("@",19)
//Some code
showiwindow(sdata);
}
function showiwindow(sdata)
{
google.maps.event.addListener(marker,'click', function(event) {
var input= event.latLng;
//some code
...
document.getElementById('<%= lbl1.ClientID %>').innerHTML = sdata[1];
document.getElementById('<%= lbl2.ClientID %>').innerHTML = sdata[2];
document.getElementById('<%= lbl3.ClientID %>').innerHTML = sdata[3];
document.getElementById('<%= lbl4.ClientID %>').innerHTML = sdata[4];
......
});
}
答案 1 :(得分:0)
感谢大家提供的各种链接。最后清楚地了解了如何处理它:
for(var i=0;i<route.length;i++)
{
var input= route[i];
var sdata= input.split("@",19)
//Some code
google.maps.event.addListener(marker,'click',showiwindow(sdata));
}
function showiwindow(rdata)
{
return function(){
.....//some code
document.getElementById('<%= lbl4.ClientID %>').innerHTML =rdata[4];
.....
};
}