问答详情
源自:10-1 编程挑战

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

为何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";

}

}

}

提问者:duskrain 2016-08-15 11:29

个回答

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

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