问答详情
源自:6-1 同时运动

链式运动多个li问题

将视频中vivian的li扩展到多个li然后使用如下代码进行运动的时候startMove中无论传递this,还是对象本身aLi[i]都会报错,这是什么原因,这个链式运动不支持多个对象么?

var aLi = document.getElementsByTagName("li");
for(var i=0;i<aLi.length;i++){
      aLi[i].timer = null;
    aLi[i].onmouseover = function(){
        startMove(aLi[i],400,'width',function(){-----这里无论传递什么都会有错误
                    startMove(aLi[i],200,'height')
        });
    }
    aLi[i].onmouseout = function(){
        startMove(this,200,'width');
    }
}
<li></li>
<li></li>
<li></li>

有人已经问过了解决方法是:

http://www.imooc.com/qadetail/139773

var aLi = document.getElementsByTagName("li");
for(var i=0;i<aLi.length;i++){
    aLi[i].timer = null; 
    aLi[i].onmouseover = function(){
        var myThis = this;
        startMove(myThis,400,'width',function(){
                    startMove(myThis,200,'height')
        });
    }
    aLi[i].onmouseout = function(){
        var myThis = this;
        startMove(myThis,200,'width');
    }
}

但是我想知道为什么会出现这种情况,这里的this分别代表什么,aLi[i]传递到startMove又是什么变量,是指针还是仅仅一个object?

提问者:天之殇 2016-11-13 10:54

个回答

  • MorningDuGe
    2016-11-14 10:09:10

    你可以在控制台输出测试下this指的是什么,或者你把所有代码粘贴过来  我看看