问答详情
源自:3-1 JS缓冲动画

没进行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)

}


提问者:qq_马五寨小子_0 2016-01-31 19:09

个回答

  • 小感冒
    2016-02-03 21:18:17
    已采纳

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

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

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

  • 贾名
    2016-02-01 11:07:28

    不知道