为了账号安全,请及时绑定邮箱和手机立即绑定

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

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


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)

}


正在回答

5 回答

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

0 回复 有任何疑惑可以回复我~
#1

NineSun 提问者

有可能,等下试一下
2015-09-10 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

NineSun 提问者

oDiv.offsetLeft>0我试过了,有问题,最终的left值都不一样
2015-09-10 回复 有任何疑惑可以回复我~

先说明两点 

  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的时候,才停下来


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

1 回复 有任何疑惑可以回复我~
#1

NineSun 提问者

谢谢你的回答,这段时间有事情都没上网站,所以现在才看到。
2015-09-10 回复 有任何疑惑可以回复我~
#2

The_Legend 回复 NineSun 提问者

没事,试过了吗
2015-09-10 回复 有任何疑惑可以回复我~
#3

人生如只如初见

我也总是停不下来,原来是这样,牛!!!!
2015-10-07 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

NineSun 提问者

但是我的初始值是10的整数倍,为什么会不一定等于0呢
2015-09-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信