为什么函数内定义的函数不能使用i?为什么用setAttribute赋值的属性不能调用?

来源:10-1 编程挑战

duskrain

2016-08-15 11:29

为何divs[i].className="show";中i不能直接在函数内函数中直接使用?如果把i改为this.index为何setAttribute也没用?

window.onload=function(){

var tablist=document.getElementById("tablist");

var lis=tablist.getElementsByTagName("li");

var choise=document.getElementById("choise");

var divs=choise.getElementsByTagName("div");

for(var i=0;i<lis.length;i++){

lis[i].setAttribute("index",i);

lis[i].onclick=function(){

for(var j=0;j<lis.length;j++){

lis[j].className="";

}

this.className="active";

for(j=0;j<divs.length;j++){

divs[j].className="hide";

}

divs[i].className="show";

}

}

}

写回答 关注

1回答

  • 暖暖0123
    2016-08-16 10:50:23

    函数内定义的函数是一个js闭包,具体看这篇博客http://www.cnblogs.com/nuannuan7362/p/5774857.html

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题