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

没进行Math.floor之前,oDiv.offsetLeft 跟 iTarget值不同啊,一个是-190,一个是-200,可是怎么运动就停止了呢,oDiv.offsetLeft==iTarget,这个还没成立啊

window.onload=function(){

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

    oDiv.onmouseover=function(){

        startMove(0);

    }

    oDiv.onmouseout=function(){

        startMove(-200);

    }

}

 

    var timer=null;

 

function startMove(iTarget){

        clearInterval(timer);//清空所有定时器

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

        timer=setInterval(function(){

            speed=(iTarget-oDiv.offsetLeft)/20;

            speed=speed>0?Math.ceil(speed):Math.floor(speed);

            alert(Math.floor(-0.5));//可以查看最后的变化是1px速度

            if(oDiv.offsetLeft==iTarget){

                clearInterval(timer);

            }

            else{

            oDiv.style.left=oDiv.offsetLeft+speed+"px";}

        }, 10)

}


正在回答

2 回答

复制了一下你的代码测试了一下,应该是停在-190.5这个数的。

原因我理解的是这样的:因为-190.5还差-9.5就达到了-200,但是如果在进行运算的话,就是比-200小了。

好比10/3,结果是3余1,永远会留下一个1,这个1就相当于上面所说的-9.5.

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

qq_马五寨小子_0 提问者

非常感谢!
2016-02-04 回复 有任何疑惑可以回复我~
#2

qq_风_54

比-200小,但是没满足oDiv.offsetLeft==iTarget这个条件定时器应该还是可以进行的啊,这里没满足这个条件为什么会停止呢
2016-03-13 回复 有任何疑惑可以回复我~

不知道

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

举报

0/150
提交
取消

没进行Math.floor之前,oDiv.offsetLeft 跟 iTarget值不同啊,一个是-190,一个是-200,可是怎么运动就停止了呢,oDiv.offsetLeft==iTarget,这个还没成立啊

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