for(var n=0;n<li.length;n++){//这步是相对于未被点击部分的样式
li[n].className = "";
div[n].className = "hide";
}
下面这两段代码放到for遍历上面为什么出错,div[this.index]里的this指向的是谁?
this.className = "on";//再对点击事件添加相应的属性
div[this.index].className = "";//通过之前的index编号绑定的指定div
window.onload=function(){
var tab = document.getElementById("tabs")
var li = document.getElementsByTagName("li");
var div = tab.getElementsByTagName("div");
for(var i=0;i<li.length;i++){//获取所有i编号的元素
li[i].index = i; //定义一个index属性对li进行编号
li[i].onclick = function(){
for(var n=0;n<li.length;n++){//这步是相对于未被点击部分的样式
li[n].className = "";
div[n].className = "hide";
}
this.className = "on";//再对点击事件添加相应的属性
div[this.index].className = "";//通过之前的index编号绑定的指定div
}
}
}
不难看出,onclick 是在循环中确认的,为了获取这个循环中的数值,你需要用 index 来确认你所点击的标签的索引,如果你用 i 来作索引,那 i 的值只会为2。顺带一句 optionObject.index 是一种对象属性。
div[this.index].className = "";//通过之前的index编号绑定的指定div 这里的this呢?
this指的就是这段代码所在的那个节点。例如
上面通过li[i].onclick()来激活了for和this.className
那么this指的就是li[i]这个节点,当然,当i为不同数的时候this指得也不同。
所以这里用this可以灵活的选中li中的每一个元素来实现效果,而不是唯一的素数。