我有一個按鈕和onmouseover我希望它移動100像素在10像素移動然後停止。移動並不是一個問題,它的停止。我可以做到這一點沒有jQuery的問題,但我需要學習如何從JavaScript從頭開始。這是我的腳本到目前爲止。Javascript mouseover/mouseout動畫按鈕
function rollRight() {
imgThumb.style.left = parseInt (imgThumb.style.left) + 10 + 'px';
animate = setTimeout(rollRight,20);
}
這動作是正確的就好了所以要停止我試圖採取的循環5×10 = 50像素量,又寫了它作爲
function rollRight() {
var i=0;
while (i < 5) {
imgThumb.style.left = parseInt (imgThumb.style.left) + 10 + 'px';
animate = setTimeout(rollRight,20);
i++;
};
}
現在,我想我缺了一塊,以使它返回while函數的[]值,但我不知道如何使它工作。一旦我有了正確的舉動,我可以運用相同的原則將它移回去。
如果任何人都可以幫助我解決這個問題,那就太好了。如果你有一個更好的腳本來做動畫,只是JavaScript,沒有圖書館,那也會很棒。
編輯:因爲把它當作一個註釋沒有工作,這是我當前的代碼
function rollRight() {
var left = parseInt (imgThumb.style.left);
if(left < 50) { // or any other value
imgThumb.style.left = left + 10 + 'px';
animate = setTimeout(rollRight,20);
}
}
function revert() {
var left = parseInt (imgThumb.style.left);
if(left < 50) { // or any other value
imgThumb.style.left = left + -10 + 'px';
animate = setTimeout(rollRight,20);
}
}
在我在得到它搬回了問題的復歸。它可能在if(左邊< 50)部分。
約瑟夫和pckill都爲正確的工作,但我麻煩onmouseout恢復。 (){ function rollRight if(left <50){//或任何其他值 imgThumb.style.left = left + 10 +'px'; animate = setTimeout(rollRight,20); } } function revert(){ var left = parseInt(imgThumb.style.left); if(left <50){//或任何其他值 imgThumb.style.left = left + -10 +'px'; animate = setTimeout(rollRight,20); } } 不會添加負值或減去將其移回原位? –
是的,它應該,但你忘記改變if語句。我會更新我的答案。 – pckill
你也忘了在'setTimeout'中更改函數名稱。我還添加了'clearTimeout',以便您在以前的動畫尚未完成時想要開始還原。 – pckill