js闭包为动态数据添加addEventListener传参问题

本文探讨了在使用addEventListener时遇到的变量值更新问题,并提供了一种解决方案,通过立即执行函数确保每次事件触发时都能获取到正确的变量值。
addEventListener为后执行参数,如果以
function(){}那么事件会执行程序最后运行的结果集

demo 
for(var i;i<10,i++){
var secRingPolygon = new BMap.Polygon();
secRingPolygon
.addEventListener("
mouseover
",function(){alert(i)});

}
这样无论那个点击事件打印的值都为 i 的最后结果集

解决方案:
secRingPolygon.addEventListener("mouseover",setcolor(aa,secRingPolygon));
secRingPolygon.addEventListener("mouseout",resetcolor(aa,secRingPolygon));


setcolor=function(aa,secRingPolygon){
   return function(evt){
      secRingPolygon.setStrokeColor("red");
      secRingPolygon.setStrokeWeight("3");
      aa.setStyle({"color":"#333"});
   }
}

resetcolor=function(aa,secRingPolygon){
   return function(evt){
      secRingPolygon.setStrokeColor("#fff");
      secRingPolygon.setStrokeWeight("0.1");
      aa.setStyle({"color":"#FFF"});
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值