为什么调用startMove函数时,对象只能是li1,而不能是this

来源:5-1 JS链式动画

慕函数9642432

2016-08-05 16:16

 var li1=document.getElementById('li1');

            li1.onmouseover= function () {
                startMove(li1,'width',400,function(){
                    startMove(li1,'height',200,function(){
                        startMove(li1,'opacity',100);
                    });
                });
            };
            li1.onmouseout= function () {
                startMove(li1,'opacity',30,function(){
                    startMove(li1,'height',100,function(){
                        startMove(li1,'width',200);
                    });
                });
            };



写回答 关注

2回答

  • 水货
    2016-08-08 09:12:12

    this 指代当前对象  在onmouseout方法体中指代调用该方法的 li1对象    而在startmove中调用该函数的并不是 li1 对象  你可以 参考http://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/这篇文章

  • 水货
    2016-08-05 18:07:27

    你可以在每一步的function中console.log(this) 就会发现在startMove 的回调函数中 this 已经不是li1对象

    慕函数964...

    怎么会是window?为什么原来的this对象指的就是li1呢

    2016-08-05 18:13:55

    共 1 条回复 >

JS动画效果

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

113925 学习 · 1443 问题

查看课程

相似问题