写了一个物体缓冲运动的demo,但是不能到达目标值,求解!function move(idname, speed, target) { clearInterval(timer); var box = document.getElementById(idname); timer = setInterval(function(){ var v = (target-box.offsetLeft)/speed; v = v > 0 ? Math.ceil(v):Math.floor(v); if (parseInt(box.style.left) == target) { clearInterval(timer); } else { box.style.left = box.offsetLeft + v + 'px'; } }, 30) }box.onmouseover = function() { move('box', 20, 500); }为什么是left值是633px?
1 回答

尚方宝剑之说
TA贡献1788条经验 获得超4个赞
你的判断条件有问题,并不是运动的结果每次都会恰好等于目标值,这之间会存在误差,可能会少,可能会多,当处于某个值之后会发生v在正负之间来回摆动的问题,所以判断的条件应该是v的绝对值与目标和实际误差绝对值的比较。另外建议变量名与实际相符。
添加回答
举报
0/150
提交
取消