将循环中的值传递给事件监听器-Javascript [英] Passing values in for loop to event listeners- Javascript

查看:98
本文介绍了将循环中的值传递给事件监听器-Javascript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能存在重复:

通过Google Maps API v3标记循环问题


我有一个循环,我从数组元素中提取一些数据,然后为每个迭代添加一个事件侦听器。但我需要将这些值传递给每个关联的侦听器,但最终只有侦听器中的最后一个数组项值。我试图从this ,但解决方案似乎不适合我的情况,我很困惑。这是我的代码:

pre $ for(var i = 0; i< route.length; i ++)
{
var input = route [i];
var sdata = input.split(@,19)
//一些代码
google.maps.event.addListener(marker,'click',showiwindow);
}

function showiwindow(event)
{
var input = event.latLng;
//一些代码
...
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 的迭代值。请参阅我的意思链接。

解决方案

这样的事情如何?

  for(var i = 0; i  {
var input = route [i];
var sdata = input.split(@,19)
//一些代码
showiwindow(sdata);
}

function showiwindow(sdata)
{
google.maps.event.addListener(marker,'click',function(event){
var input = event.latLng;
//一些代码
...
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];
......
});
}


Possible Duplicate:
Looping through Markers with Google Maps API v3 Problem

I have a loop in which I extract some data from an array element, then add an event listener for each iteration. But I need to pass these values to each associated listener but I end up having only the last array item values in the listener. I have tried to understand from "this" but the solution seems not suitable in my case and I am confused. This is the code that I have:

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];     
  ......
}    

When I click on a marker I only get the values of the last iteration. Coming back to the solution in that link, how do I pass the array along with the iteration value that is i. Kindly refer to the link of what I meant.

解决方案

How about something like this?

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];     
    ......
  });
}    

这篇关于将循环中的值传递给事件监听器-Javascript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆