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

不懂为什么(itarget-odiv.offsetLeft)/20 之后left就回不到200或者-200了。。。。

var speed = (itarget-odiv.offsetLeft)/20;

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

if(oDiv.offsetLeft ==iTarget){

   clearInterval(timer);

}

else{

oDiv.style.left = oDiv.offsetLeft+speed+'px';

}

提问者:其实TAMA酱不是我名字 2016-04-09 22:28

个回答

  • 路漫漫兮2015
    2016-04-10 10:06:16
    已采纳

    当(itarget-odiv.offsetLeft)/20=10/20=0.5PX时,oDiv.style.left = oDiv.offsetLeft+speed+'px';=190+0.5=190.5px,像素出现了小数程序无法执行下去。


  • qq_Pal_0
    2016-04-18 00:13:18

    就是因为那个offsetLeft属性的值是不能带小数的。所以要想办法用Math的方法把speed变成整数,这样才能把offsetLeft弄成整数.

  • 慕田峪8115978
    2016-04-10 10:09:33

    请检查你的样式表里面有没有加border,offsetLift获取的左值+边框的值