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

关于this指代当前对象

window.onload=function(){
   var aLi=document.getElementsByTagName('li');
   for(var i=0; i<aLi.length; i++){
       aLi[i].onmouseover=function(){
           var aUl = this.getElementsByTagName("ul")[0];
           if(aUl){
             var  This = aUl;
           }
           clearInterval(This.time);
           This.time=setInterval(function(){
               This.style.height=This.offsetHeight+16+"px";
               if(This.offsetHeight>=120){
                   clearInterval(This.time);
               }
           },30)

       }


第五行的this换成aLi[i]为什么运行不出,this指代的不是它吗?

正在回答

3 回答

在事件处理程序中this指向会发生改变,这里指向window。

第一种处理:在事件处理程序外,先将this存储。

var _this = this;
aLi[i].onmouseover=function(){
    var aUl = this.getElementsByTagName("ul")[0];

第二种处理:也可以使用事件对象的currentTarget属性确定正在处理事件的那个元素。

aLi[i].onmouseover=function(ev){
    ev = ev || event;
    var aUl = ev.currentTarget;.getElementsByTagName("ul")[0];


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

应该是啊

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

黑白灰菌 提问者

运行不出呢
2016-10-23 回复 有任何疑惑可以回复我~
#2

慕粉4221306 回复 黑白灰菌 提问者

我也想知道,this到底指什么
2016-10-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
导航条菜单的制作
  • 参与学习       123899    人
  • 解答问题       813    个

水平、垂直、圆角导航条菜单,让您的技术探索之路更高效

进入课程

关于this指代当前对象

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