下面这段:
window.onload = function(){
var oTab = document.getElementById("tabs");
var oUl = oTab.getElementsByTagName("ul")[0];
var oLis = oUl.getElementsByTagName("li");
var oDivs= oTab.getElementsByTagName("div");
for(var i= 0,len = oLis.length;i<len;i++){
oLis[i].index=i;
oLis[i].onclick = function() {
for(var n= 0;n<len;n++){
oLis[n].className = "";
oDivs[n].className = "hide";
}
this.className = "on";
oDivs[this.index].className = "";
}
}
}
最后部分: this.className="on";
oDivs.[this.index].className="";
为什么不能把this.className换成oLis[i].className?难道不是一样的效果吗?(我已经测试过换了之后会出错)
同样的为什么不能把oDivs.[this.index]换成oDivs.[i].className呢?
我的理解是在oLis[i]的onclick方法在被调用时已经不在变量i的作用域中了。
变量i位于window.onload中的for循环里,你说的那两个语句在for循环中被定义成函数绑定给了onclick,但这时onclick没有被调用。而在onclick在被调用时for循环所处的window.onload已经执行结束了。