亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么速度值只能是目標值的倍數 如果不是則就停不下來了

window.onload?=?function?()?{
var?oDiv?=?document.getElementById('div1');
oDiv.onmouseover?=?function?()?{
startMove(7,0);
}
oDiv.onmouseout?=?function?()?{
startMove(-10,-200);
}
}

var?timer?=?null;
//?傳參數的方法
function?startMove(speed,iTarget)?{
var?oDiv?=?document.getElementById('div1');
//?防止多次啟用定時器
clearInterval(timer);
//?添加一個定時器
timer?=?setInterval(function?()?{
//?判斷目標值
if?(oDiv.offsetLeft?===?iTarget)?{
clearInterval(timer);
}?else?{
//?給當前位置的值加10
oDiv.style.left?=?oDiv.offsetLeft?+?speed?+?'px';
}
},?30);
}

正在回答

4 回答

回復 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用來表示開始還是停止,這個可以通過其他條件判斷,我這樣就是圖方便。



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

OneMagic 提問者

我明天用電腦看看 謝謝你
2017-05-08 回復 有任何疑惑可以回復我~

你需要把當前位置的oDiv.offsetLeft值與itarget再做一次if判斷,以你這個startMove(7,0);參數為例。if(oDiv.offsetLeft>itarget也就是0){oDiv.offsetLeft=itarget}這樣目標就能夠停下來了。相反,目標往左邊移動也一樣,if(oDiv.offsetLeft<target也就是-200){oDiv.offsetLeft=itarget}目標也停下來了

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

不是倍數肯定停不下來啊,oDiv.offsetLeft?= 0 才能停下來,你每次加7,最后大于0,但不會等于0,所以就不停了啊

1 回復 有任何疑惑可以回復我~

你可以console.log(oDiv.offsetLeft)這個值看一下。當你值不是倍數的時候,它是跳過iTarget這個的,所以用==來判斷目標值是有bug的。

有一個解決方法就是判斷oDiv.offsetLeft+oSpeed>=itarget,這個時候可以將itarget賦值給left。

oDiv.style.left = itarget+'px';

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

OneMagic 提問者

oDiv.offsetLeft+oSpeed>=目標值是什么意思
2017-05-07 回復 有任何疑惑可以回復我~
#2

OneMagic 提問者

如果做這個判斷的話oDiv.offsetLeft+speed>=itarget 鼠標移開的遞減就不行了就不會縮回去了。你能貼下你解決BUG的代碼出來我看看嗎 謝謝
2017-05-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么速度值只能是目標值的倍數 如果不是則就停不下來了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號