Sharron
2016-05-27 16:36
// 滑过滑过、离开、点击每个选项时 // 执行脚本 for(var i=0;i<lis.length;i++){ lis[i].onmouseover=function(){ this.style.background='#CCC'; } lis[i].onmouseout=function(){ this.style.background='#FFF'; } lis[i].onclick=function(event){ menu.style.display='none'; title.innerHTML=this.innerHTML; } }
用 lis 如上执行出来的是蓝色连接样式如图
问题1:其中lis[i].onclick=function(event){
menu.style.display='none';
title.innerHTML=this.innerHTML;
}部分的 this 换成lis[i] 就不行了,为什么?
问题2:改用参考答案as[i]来执行如下:
// 滑过滑过、离开、点击每个选项时 // 执行脚本 for(var i=0;i<as.length;i++){ as[i].onmouseover=function(){ this.style.background='#CCC'; } as[i].onmouseout=function(){ this.style.background='#FFF'; } as[i].onclick=function(event){ menu.style.display='none'; title.innerHTML=this.innerHTML; } }
执行效果:
相比用 lis 的效果,为什么会有这样的差异呢?
楼上说的对lis包含a标签
当你用as[i].onclick=function(){}时 as[i]还不是个对象(java里叫类),就没有属性,你可以看下浏览器的开发者工具控制台
显示的应该是undifend,如果有java或面向对象的基础就比较好理解了。
只能告诉你样式的不同,lis[i].innerHTML中包含a标签,所以会出现上面那种情况,至于this为什么不能用对象直接替代,我找了好多资料也没有理解,只是说不能用这种方式创建function,不懂
DOM事件探秘
99545 学习 · 1197 问题
相似问题