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

不懂为什么(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';

}

正在回答

3 回答

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


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

慕田峪8115978

他的speed做了取整操作,不是这个问题
2016-04-10 回复 有任何疑惑可以回复我~
#2

其实TAMA酱不是我名字 提问者

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

小西瓜籽

非常正确
2016-06-23 回复 有任何疑惑可以回复我~
#4

小西瓜籽

然后 把speed=0.5向上取整为1,在进行一次else中的代码 ,结束
2016-06-23 回复 有任何疑惑可以回复我~
#5

小西瓜籽

执行一次后 offsetLeft=-190 那 190/20=9.5 也不是整数 不加下面取整代码时,程序一直执行到offsetLeft=-10时才不能执行是为什么,求解答
2016-06-23 回复 有任何疑惑可以回复我~
查看2条回复

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

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

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

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

举报

0/150
提交
取消

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

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