为什么把 var timer=null放进startmove()里就不起作用,多次触碰还是会变快

来源:2-1 JS速度动画

麦片家电饼

2018-04-26 22:17

function startmove() {
    var timer=null;
    clearInterval(timer);
    var oDiv=document.getElementById("div1");
    timer=setInterval(function () {
        if (oDiv.offsetLeft==0){
            clearInterval(timer);
        }else {
            oDiv.style.left=oDiv.offsetLeft+1+'px';
        }
    },50)
}


写回答 关注

1回答

  • 慕数据9255373
    2018-04-28 10:10:31
    已采纳

    当你多次触碰时,上一次的定时器timer被 

    var timer=null;

    重新赋值了(即timer这个定时器的对象找不到了),导致clearInterval(timer),起不了作用。

    应该将var timer=null;写在函数的外面

JS动画效果

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

113923 学习 · 1443 问题

查看课程

相似问题