chenjiaobin
2016-04-19 22:20
for(var i=0;i<as.length;i++){
as[i].onmouseover=function(){
this.style.background="#ccc";
}
as[i].onmouseout=function(){
this.style.background='none';
}
as[i].onclick=function(){
title.innerHTML=this.innerHTML;
}
}
for(var i=0;i<as.length;i++){
as[i].onmouseover=function(){
this.style.background="#ccc";
}
}
如果 this.style.background="#ccc"; 写成 as[i].style.background="#ccc";
最后as[0]~as[3]的元素的 onmouseover 函数会变成
as[0].onmouseover=as[i].style.background="#ccc";
as[1].onmouseover=as[i].style.background="#ccc";
as[2].onmouseover=as[i].style.background="#ccc";
as[3].onmouseover=as[i].style.background="#ccc";
因为i经过for循环已经计算得出是4.
所以上式可以写成
as[0].onmouseover=as[4].style.background="#ccc";
as[1].onmouseover=as[4].style.background="#ccc";
as[2].onmouseover=as[4].style.background="#ccc";
as[3].onmouseover=as[4].style.background="#ccc";
显然是不正确的, 如果写成this
as[0].onmouseover=this.style.background="#ccc";
as[1].onmouseover=this.style.background="#ccc";
as[2].onmouseover=this.style.background="#ccc";
as[3].onmouseover=this.style.background="#ccc";
懂了吧~
这段代码是为了改变滑过导航条时颜色发生变化,但是为什么不是指向as[i]而是window
这里的this指向的是window
DOM事件探秘
99545 学习 · 1197 问题
相似问题