2011-01-28 95 views
2

我創建了一個排序器,需要它運行,直到頁面明顯關閉或導航離開。創建一個基於Javascript的新聞自動收錄器

這個腳本會剛剛經歷裏被循環(這是我這麼遠):

$("li").hide(); //hides all "li" onload 
var lis = $("ul").children("li").size(); //counts how many "li"s there are 
var count = 0; 
while(true) 
{ 
    count++; 
    if(count>lis) //checks if count needs to be reset 
    count = 1; 

    $("li:nth-child(" + count + ")").fadeIn('slow'); 
    setTimeout('', 4000); 
} 

顯然,頁面將不會因爲無限循環的加載。有沒有人有任何關於我應該如何去做的建議?

回答

2
var ticker = $('ul.ticker'); 
ticker.children(':first').show().siblings().hide(); 

setInterval(function() { 
    ticker.find(':visible').fadeOut(function() { 
     $(this).appendTo(ticker); 
     ticker.children(':first').show(); 
    }); 
},2000); 

demo

0

你應該讓你的setTimeout指向每次想要觸發的函數,並讓該函數再次調用setTimeout。它實際上是無限輪詢,但內置延遲。它還可以讓你設置一個標誌,如果你想打破(即不要再次調用setTimeout)。

+0

我應該如何讓腳本無限運行?因爲while(true)不能正常工作 – nkcmr 2011-01-28 04:22:11

+0

或者你可以使用setInterval來連續調用'next元素'。 – rcravens 2011-01-28 04:22:18

+0

這就是我要說的。 setTimeout使用一個函數作爲它的第一個參數。如果你有這個函數做你的循環內的邏輯(而不是循環),你只需要保持setTimeout永遠重置。 setInterval(如rcravens所說)是另一種方法,但在大多數情況下,我發現setTimeout更可靠,因此您不必擔心在再次調用函數之前代碼是否完成。 – Paul 2011-01-28 04:28:35

0

還有別的東西就像一個jQuery插件(jQuery webTicker),做所有的工作適合你。例如,你可以做一個無序列表

<ul id='webticker'> 
    <li>text</li> 
</ul> 

使用jQuery在它

jQuery('#webticker').webTicker(); 

頂部,這將自動啓動旋轉腳本,你還需要其沿着插件提供了一些額外的CSS本身可以修改的造型。腳本包括,當鼠標在webticker,而你可以在淡入和淡出效果在webticker example解釋下載網站

0

上要添加到Reigel的輝煌答案的頂部自動停止功能,

var ticker = $('ul.ticker'); 
ticker.children(':first').show().siblings().hide(); 

setInterval(function() { 
ticker.find(':visible').fadeOut(function() { 
    $(this).appendTo(ticker); 

    // fadeIn() rather than show() here to create a continuously fading effect. 

    ticker.children(':first').fadeIn(); 
}); 
},2000); 
相關問題