window.onload?=?function?()?{
var?oDiv?=?document.getElementById('div1');
oDiv.onmouseover?=?function?()?{
startMove(7,0);
}
oDiv.onmouseout?=?function?()?{
startMove(-10,-200);
}
}
var?timer?=?null;
//?傳參數(shù)的方法
function?startMove(speed,iTarget)?{
var?oDiv?=?document.getElementById('div1');
//?防止多次啟用定時器
clearInterval(timer);
//?添加一個定時器
timer?=?setInterval(function?()?{
//?判斷目標(biāo)值
if?(oDiv.offsetLeft?===?iTarget)?{
clearInterval(timer);
}?else?{
//?給當(dāng)前位置的值加10
oDiv.style.left?=?oDiv.offsetLeft?+?speed?+?'px';
}
},?30);
}
2017-05-08
回復(fù) OneMagic:
if(flag == "start"){
if(oPanle.offsetLeft+oSpeed>=itarget){
oPanle.style.left = itarget+'px';
clearInterval(timer);
}else{
oPanle.style.left = oPanle.offsetLeft+oSpeed+'px';
}
}else if(flag == "stop"){
if(oPanle.offsetLeft+oSpeed<=itarget){
oPanle.style.left = itarget+'px';
clearInterval(timer);
}else{
oPanle.style.left = oPanle.offsetLeft+oSpeed+'px';
}
}
我在方法中加了一個flag用來表示開始還是停止,這個可以通過其他條件判斷,我這樣就是圖方便。
2017-05-17
你需要把當(dāng)前位置的oDiv.offsetLeft值與itarget再做一次if判斷,以你這個startMove(7,0);參數(shù)為例。if(oDiv.offsetLeft>itarget也就是0){oDiv.offsetLeft=itarget}這樣目標(biāo)就能夠停下來了。相反,目標(biāo)往左邊移動也一樣,if(oDiv.offsetLeft<target也就是-200){oDiv.offsetLeft=itarget}目標(biāo)也停下來了
2017-05-07
不是倍數(shù)肯定停不下來啊,oDiv.offsetLeft?= 0 才能停下來,你每次加7,最后大于0,但不會等于0,所以就不停了啊
2017-05-07
你可以console.log(oDiv.offsetLeft)這個值看一下。當(dāng)你值不是倍數(shù)的時候,它是跳過iTarget這個的,所以用==來判斷目標(biāo)值是有bug的。
有一個解決方法就是判斷oDiv.offsetLeft+oSpeed>=itarget,這個時候可以將itarget賦值給left。
oDiv.style.left = itarget+'px';