这样写,为什么会一直运动?

来源:2-1 JS速度动画

lengqiu

2017-09-20 22:36

timer = setInterval(function(){              move.style.left = move.offsetLeft+ 10+"px";              if(move.offsetLeft >= 0){                  clearInterval(timer);              }          }, 30); 当move.offsetLeft >= 0成立时,为何clearInterval和+10会一直执行下去?

写回答 关注

2回答

  • 丶痞子绅士
    2017-09-23 22:32:45

    只看你贴出的代码,主要问题是判断条件的问题

    move.style.left = move.offsetLeft+ 10+"px";放到if语句的后面,用else包围起来就可以解决问题。

    BUG原因:

    你把移动的代码写在了判断的前面,会导致你每次触发移入事件都会先移动10px,然后再清除计时器,如此循环往复,你的判断语句完全没有起到效果。


  • 慕盖茨6243357
    2017-09-21 09:31:56

    因为你的那个判断条件一直是成立的呀,move.offsetLeft>=0这个条件一直成立,所以 clearInterval(timer)会一直执行。计时器也会一直执行。

JS动画效果

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

113925 学习 · 1443 问题

查看课程

相似问题