2017-03-16 32 views
0

我有以下代碼運行幻燈片。我希望能夠在函數內設置間隔的持續時間,而不是使用靜態值 - 這取決於我稍後將添加的其他因素。這可能嗎?下面似乎沒有工作。設置函數內javascripts setInterval的持續時間

感謝

$('#slideshow > div:gt(0)').hide(); 
setInterval(function() { 
    $('#slideshow > div:first') 
     .fadeOut(0) 
     .next() 
     .fadeIn(0) 
     .end() 
     .appendTo('#slideshow'); 
    window.duration = 1000; 
}, duration); 
+0

[更改的setInterval的時間間隔,而它的運行]的可能的複製(http://stackoverflow.com/questions/1280263/changing-the-interval-of-setinterval-while-它正在運行) –

回答

0

您可以使用setTimeout

然後你必須在你的回調中每次調用這個函數。

喜歡的東西

function myCallback() { 
    ... 
    ... 

    var myTime = 2435; // whatever depending on sth 

    setTimeout(myCallback, myTime); 
} 

setTimeout(myCallback, someInitialTime); 
+0

謝謝。但我沒有看到區別?我的問題可以同樣適用於在setTimeout中設置函數中的持續時間? – BigJ

+0

@BigJ如果您使用'createInterval',那麼您已經創建了具有特定持續時間的間隔。在稍後的時間更改保存持續時間的變量*不會*更改創建'setInterval'時最初使用的持續時間。如果你使用'setTimeout',那麼它只運行一次,這就是爲什麼你的回調函數執行後再次調用它。它在這方面與'setInterval'具有相同的效果,但這意味着如果您願意,您可以在每次超時後修改持續時間。 – Archer

+0

好的謝謝 - 知道了! – BigJ