沒進行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)
}
2016-02-03
復制了一下你的代碼測試了一下,應該是停在-190.5這個數的。
原因我理解的是這樣的:因為-190.5還差-9.5就達到了-200,但是如果在進行運算的話,就是比-200小了。
好比10/3,結果是3余1,永遠會留下一個1,這個1就相當于上面所說的-9.5.
2016-02-01
不知道