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

var mainMenu = document.getElementById("mainMenu").getElementsByTagName("li");

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

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

      console.log(num);

  })(i);

为什么我还没有点击,一打开网页后台就打印了所有i值??求各位大神帮忙解答一下,万分感谢

bengbengbeng
浏览 1848回答 4
4回答

慕少1338687

这是用闭包的方式写的,有点绕,你可以用this.index写for(var i = 0; i < 5; i++){mainMenu[i].onclick = (function(num){      return function(){    console.log(num);          };  })(i);}

OlderSkee

(function(){})(i)是个自执行函数 当然是网页一打开就执行了咯。函数体改成这样就可以实现 点哪个li打印哪个lifor(var i = 0; i < 5; i++) {    mainMenu[i].index = i;    mainMenu[i].onclick = function () {        console.log(this.index);    };}

Sexyme

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

qq_sU_4

你是要获取点击当前的值吗?
打开App,查看更多内容
随时随地看视频慕课网APP