2 malijiav5 malijiav5 于 2016.04.14 14:12 提问

怎么把变量传入事件函数中,求助

请问我这个代码
for(var i=0;i<markers.length;i++){
console.log(infoWindows[i]);
markers[i].addListener('click', function() {
console.log(infoWindows[i]);
infoWindows[i].open(map, this);
});
}
在第一次console的时候有值,第二次就没有了,为什么,我怎么把 infoWindows[i]的值传入事件函数中?

5个回答

showbo
showbo   Ds   Rxr 2016.04.14 14:44

做个闭包,使处理使用引用到的是当前遍历到的markers,要不最后你的i是循环后的最大值markers.length

for(var i=0;i<markers.length;i++){
    console.log(infoWindows[i]);
    markers[i].addListener('click', onClick(infoWindows[i]));
}
function onClick(value) {
    return function () {
        value.open(map, this);
    }
};
sanningjing
sanningjing   2016.04.14 14:25

请问详细一点。。。看不明白代码 

sanningjing
sanningjing   2016.04.14 14:25

请问详细一点。。。看不明白代码 

sanningjing
sanningjing   2016.04.14 14:26

请问详细一点。。。看不明白代码 

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.14 14:26

难么你定义function的时候可以给定个参数啊,分开写,类似如下代码:

for(var i=0;i<markers.length;i++){
 console.log(infoWindows[i]);
 markers[i].addListener('click', onClick(infoWindows[i])));
 }
 function onClick(value) {
 console.log(value);
 value.open(map, this);
 })
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
python 字典怎样当作参数传入函数里,以及在函数里的一些遍历。变量的作用域。
字典当作参数以后的一些用法: dic={'abc':123,'aaa':333,'wer':334} def text_dic(**dd): for a,b in dd.items():# a 代表键 ,b代表值 print(a,b) text_dic(**dic) #输出字典中的键: def text_dic(**dd):      for key
angularJS调用事件时将自身作为参数传递
angularJS调用事件时将自身作为参数传递
js函数中传入的event参数
event是事件的参数啊!在event中包含了事件触发时的参数,比如click事件的event中包含着.e.pageX,e.pageY,keydown事件中包含着ev.keyCode等,在ie中,event是全局的可以通过window.event来获取,在其他浏览器中都是作为参数传入的。 所以好多事件函数都是这样写: mydiv.onclick = function(ev){ if(!ev
JavaScript 将事件event作为参数传递,鼠标移动事件
网页标题 #d1{ background-color:black; height:300px; color:white; cursor:crosshair; /* 表示鼠标的形状 */ } function fn(e){ //将事件event作为参数传递 var x=e.clientX; //获取鼠标事件的坐标
js--dom--添加事件的时候传递参数的方法
1.js的位置必须是dom节点之后,否则就会说找不到节点。   click here init(); function init() {   document.getElementById("myHeader").onclick = test(33); //必须放在这,如果放在head中的话,就会说找不到myHeader节点 } function test
js 事件绑定函数与this的使用
时间绑定有多种方式,经常用到的有在js文件中绑定如: $("sometag").click(somefunction); 还可以在html文件中绑定如: 两种方式的区别是:前一种绑定方式,自动的把当前标签当作this元素传递给somefunction,在后一种方式不会把当前元素传递给somefunction函数, 如果需要,可以将当前元素当作somefunction的参数传入,如:在
C#.NET常见问题(FAQ)-如何把函数名作为参数传递给另一个函数
在主窗体中使用的还是普通的函数,但是test函数有一个新的参数,就是method  这个method所指向的就是前面委托定义的method    更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123  我的在线论坛: http://csrobot.gz01.bdysite.c
js中如何通过单击事件获取当前对象,并传递当前对象到函数中?
例:var  str = “点我”, 其中this不需要加引号。
js--变量的复制与函数参数的传递
编程的时候,你可能会碰到关于变量赋值和变量作为参数传递之类的疑难杂症。明明是符合逻辑的,偏偏结果不是自己想要的。下面请听我一一道来。请看代码 代码1: var a = 5; var b = a; b = 6; alert(a);这时页面输出结果为:5.这里大家肯定觉得没什么问题,那么请看代码2. 2. 代码2:var obj1 = { name:"关羽",
java 对象传入到函数原对象不改变 值传递 引用传递
背景: 做项目的时候,将一个空对象的引用传入到方法中,期待方法里面创建一个新的对象给这个引用,后面就可以拿着这个对象用了。    可结果就是,定义在外面的对象引用并没有拿到这个引用 demo.java public class Entry { public static void main(String[] args) { List re