为了账号安全,请及时绑定邮箱和手机立即绑定

事件点击for循环时的匿名函数问题

事件点击for循环时的匿名函数问题

bengbengbeng 2016-09-06 17:11:52
var mainMenu = document.getElementById("mainMenu").getElementsByTagName("li");   for(var i = 0; i < 5; i++){ mainMenu[i].onclick= (function(num) {       console.log(num);   })(i);为什么我还没有点击,一打开网页后台就打印了所有i值??求各位大神帮忙解答一下,万分感谢
查看完整描述

4 回答

已采纳
?
慕少1338687

TA贡献9条经验 获得超3个赞

这是用闭包的方式写的,有点绕,你可以用this.index写

for(var i = 0; i < 5; i++){

mainMenu[i].onclick = (function(num){

  

    return function(){

    console.log(num);

      

    };

  })(i);


}


查看完整回答
3 反对 回复 2016-09-06
?
OlderSkee

TA贡献123条经验 获得超103个赞

(function(){})(i)是个自执行函数 当然是网页一打开就执行了咯。

函数体改成这样就可以实现 点哪个li打印哪个li

for(var i = 0; i < 5; i++) {
   mainMenu[i].index = i;
   mainMenu[i].onclick = function () {
       console.log(this.index);
   };
}


查看完整回答
2 反对 回复 2016-09-07
?
Sexyme

TA贡献3条经验 获得超2个赞

你认真看看,你给onclick事件绑定的是什么。

查看完整回答
1 反对 回复 2016-09-07
  • bengbengbeng
    bengbengbeng
    当初不知道自执行函数会一打开页面就执行。。。。谢谢你们的回答。。。
?
qq_sU_4

TA贡献30条经验 获得超6个赞

你是要获取点击当前的值吗?


查看完整回答
1 反对 回复 2016-09-06
  • bengbengbeng
    bengbengbeng
    恩,一开始就是想把i值传过去,现在用闭包解决了,谢谢你们的回答
  • 4 回答
  • 0 关注
  • 1840 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信