根据http://fgm.cc/练习,总结如下:
- &&操作符
this.index == oBtn.length - 1 && (oDiv.style.cssText = "");
这句很困惑,查了之后上一句代码等同于
if((this.index)==oBtn.length-1){
oDiv.style.cssText="";
}
- for-in
window.onload = function ()
{
var oLink = document.getElementsByTagName("link")[0];
var oSkin = document.getElementById("skin").getElementsByTagName("li");
for(var i = 0; i< oSkin.length; i++)
{
oSkin[i].onclick = function ()
{
for(var p in oSkin) oSkin[p].className = "";
this.className = "current";
oLink['href'] = this.id + ".css";
}
}
};
上面的代码是一个换肤的代码,不难理解出现疑问在
for( var p in oSkin) oSkin[p].className = ""
这一句了,没有搞懂p代表啥,在JS高级教程中
for-in语句是一种精准的迭代语句,可以用来枚举对象的属性
for(var p in oSkin) oSkin[p].className = "";
在这句代码中我们使用for-in循环来显示了BOM中oSkin对象的所有属性,每次执行循环 ,把oSkin这个对象存在的属性名赋值给变量P,这里的oSkin是一个 HTMLCollection [ li , li .current , li ],HTMLCollection 对象的行为和只读数组一样,所以可以使用 JavaScript 的方括号,通过编号或名称索引一个 HTMLCollection 对象。这个过程会持续到对象中的所有属性都被枚举一遍为止。var操作符不是必须的,但是为了保证局部变量的使用,推荐这么做。