为了账号安全,请及时绑定邮箱和手机立即绑定

关于用 lis 和用 as 的区别?

// 滑过滑过、离开、点击每个选项时
      // 执行脚本
      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 如上执行出来的是蓝色连接样式如图

http://img1.sycdn.imooc.com//574805900001eab802390055.jpg

问题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;
          }
      }

执行效果:

http://img1.sycdn.imooc.com//574806a400014bd302160060.jpg

相比用 lis 的效果,为什么会有这样的差异呢?

正在回答

2 回答

楼上说的对lis包含a标签

当你用as[i].onclick=function(){}时 as[i]还不是个对象(java里叫类),就没有属性,你可以看下浏览器的开发者工具控制台

显示的应该是undifend,如果有java或面向对象的基础就比较好理解了。

0 回复 有任何疑惑可以回复我~

只能告诉你样式的不同,lis[i].innerHTML中包含a标签,所以会出现上面那种情况,至于this为什么不能用对象直接替代,我找了好多资料也没有理解,只是说不能用这种方式创建function,不懂

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
DOM事件探秘
  • 参与学习       99544    人
  • 解答问题       1197    个

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

进入课程

关于用 lis 和用 as 的区别?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信