链式运动多个li问题

来源:6-1 同时运动

天之殇

2016-11-13 10:54

将视频中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?

写回答 关注

1回答

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

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

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题