2010-09-08 221 views
2

我有一個噩夢試圖讓一些報價循環延遲。我創建了以下代碼:延遲循環問題

function loopquotes(){ 
var items = $('.comment').size(); 
var randomNum = Math.floor(Math.random()*items+1); 
$(".comment:nth-child("+randomNum+")").fadeIn('slow').delay(5000); 
$(".comment:nth-child("+randomNum+")").fadeOut('medium'); 
} 

這很好地淡入淡出延遲。但是,循環保持循環而不使用延遲,並且最終會在頁面上引用大量引號。任何人都可以幫助我正確地循環,這樣一個新的報價只在舊報價淡出之後才加載。

非常感謝

大衛

回答

2

你可以再次調用該函數作爲回調,像這樣:

function LoopQuotes(){ 
    var comments = $('.comment'), 
     rand = Math.floor(Math.random()*comments.length+1); 
    comments.eq(rand).fadeIn('slow').delay(5000).fadeOut('medium', LoopQuotes); 
} 

然後就叫這個曾經在頁面加載,例如用document.ready調用,就像這樣:

$(LoopQuotes); 

這樣做是淡入報價,延遲5000毫秒,淡化出來,在.fadeOut()完成那麼當,再次調用該函數來接/顯示下一個報價。

+0

嗨尼克,非常感謝那個解決方案,它一直在推動着我的堅果。我已經向您的解決方案發布了一個小修復程序,因爲您的解決方案正確無誤,但在第二次運行時不會再獲得另一個報價。下面的代碼似乎現在雖然工作。 – Davemof 2010-09-08 19:31:15

+0

函數LoopQuotes(){ \t var size = $('。comment')。size(); \t rand = Math.floor(Math.random()* size + 1); ('',';');)()。。。。。。。。。。。。。。。。。。。。。。。。。。 } – Davemof 2010-09-08 19:31:46