2016-08-26 35 views
-2

我使用setInterval和jQuery來更改背景圖像onLoad的位置,但我想將它用作函數,所以我可以調用clearInterval在單擊某個元素時將其停止並在單擊另一個元素時再次調用該函數,但panRight()在加載時不工作。如何使用setInterval和clearInterval作爲函數

function moveImage() { 
var x = 0; 
    x-=1; 
    $('.bg-img').css('background-position-x', x + 'px'); 
} 

function panRight(){ 
    setInterval(moveImage(),25); 
} 

// moveImage onLoad 
panRight(); 

$("#stop-animation").click(function(){ 
    clearInterval(panRight); 
}); 

$("#start-animation").click(function(){ 
    panRight(); 
}); 

下面的代碼按照預期的onLoad工作,並且是我試圖重構的函數。

$(function(){ 
    var x = 0; 
    setInterval(function(){ 
     x-=1; 
     $('.bg-img').css('background-position', x + 'px 0'); 
    }, 25); 
}) 
+2

'VAR panRight = setInterval的得到返回計時器ID (moveImage,25);',而不是'function panRight(){setInterval(moveImage(),25);}'。 – Xufox

+0

如果您單擊了setInterval和/或clearInterval的標籤,它將顯示這些標籤的問題。如果您點擊「瞭解更多」,它會顯示標記wiki,其中包含有關如何使用這些功能的信息,包括指向文檔的鏈接。 –

+0

謝謝。我不知道。 – Fettabachi

回答

-1

你可以這樣說:

function moveImage() { 
var x = 0; 
    x-=1; 
    $('.bg-img').css('background-position-x', x + 'px'); 
} 

var panInterval; //timer id 

function panRight(){ 
    panInterval = setInterval(moveImage,25); 
} 

// moveImage onLoad 
panRight(); 

$("#stop-animation").click(function(){ 
    clearInterval(panInterval); 
}); 

$("#start-animation").click(function(){ 
    panRight(); 
}); 

這裏var panInterval是每當我們稱之爲setInterval並且可以使用清除間隔

+0

對不起@Xufox ...! – vijayP

+0

非常好!除了在函數之外聲明x。 – Fettabachi

相關問題