沒進(jìn)行Math.floor之前,oDiv.offsetLeft 跟 iTarget值不同啊,一個(gè)是-190,一個(gè)是-200,可是怎么運(yùn)動(dòng)就停止了呢,oDiv.offsetLeft==iTarget,這個(gè)還沒成立啊
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);//清空所有定時(shí)器
????????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
復(fù)制了一下你的代碼測(cè)試了一下,應(yīng)該是停在-190.5這個(gè)數(shù)的。
原因我理解的是這樣的:因?yàn)?190.5還差-9.5就達(dá)到了-200,但是如果在進(jìn)行運(yùn)算的話,就是比-200小了。
好比10/3,結(jié)果是3余1,永遠(yuǎn)會(huì)留下一個(gè)1,這個(gè)1就相當(dāng)于上面所說的-9.5.
2016-02-01
不知道