问答详情
源自:2-1 JS速度动画

求哪位大神帮我看一下是哪里出问题,就是停不下来,检查了很多遍了。

有没有大神帮我看一下,不知道哪里出问题了,就是停不下来,检查了很多遍了。纠结


window.onload=function(){

var oDiv=document.getElementById("div1");

oDiv.onmouseover=function(){

startMove();

}

}

var timer=null;

function startMove(){

var oDiv=document.getElementById("div1");

timer=setInterval(function()

{

   if(oDiv.offsetLeft==0)

     {

       clearInterval(timer);

                                 }

   else

             { 

    oDiv.style.left=oDiv.offsetLeft+10+"px";

                                         }

},30)

}


提问者:NineSun 2015-08-17 17:27

个回答

  • 小姑娘技术好
    2015-09-10 14:14:25

    有可能是你的布局有问题。运动的距离不是10的倍数。*{margin:0;padiding:0;}初始化一下。left要是10的倍数。div没有边框和padding'margin值。

  • 小姑娘技术好
    2015-09-03 17:00:36

    oDiv.offsetLeft>0它就能停下来了

  • The_Legend
    2015-08-30 16:02:49

    先说明两点 

    1. 我是学生,以下是个人看法,仅供参考,不过我都测验过了

    2. 希望下次把完整的代码发到问题中,这样别人就不用再去写样式,也不用猜你的样式是怎样的

      以下是我的回答


      1. 设置了margin,没设置left。

      结果:会一直往前跑,因为oDiv不知道什么时候停下来,这时候的margin-left代替了left,为什

      么会代替,我也不知道。

      而且前进的speed为margin-left+10.(因为你设置的是10)

      2.没设置margin,设置了left。

      结果:不会往前跑(left小于0才行,因为一开始就大于0,而且speed为10(正数),永远都不会

      停,因为left永远都不会为0)

      3.同时设置了margin和left。

      结果:会一直往前跑

      前进的speed为margin-left+10(如果speed为负的话,就往相反方向移动)

      真正的left(我定义为real-left,好记点)为(margin-left+left)的值,

      real-left 为负的时候,以left为准进行计算(判断依据real-left为0的时候,才会停下来),

      real-left 为正的时候,以real-left为准进行计算。

      如果speed的值恰好能让real-left为0,则能停下来。判断也是real-left为0的时候,才停下来


    希望能给我回复,你的问题。这样大家才能共同进步

  • NineSun
    2015-08-25 19:22:27

    但是我的初始值是10的整数倍,为什么会不一定等于0呢

  • J丶_0
    2015-08-17 22:42:32

    默认值+10一直加 不一定等于0  可能直接就大于0 或者小于0 的