2011-09-16 7 views
2

私はニュースティッカーが必要なウェブサイトを持っています。現在、私はそれに値をつける配列を持っています、そしてx秒ごとに、私はニュース・ストーリーを変えたいと思います。setIntervalはjavascriptの配列をループしますか?

function startNews(stories) { 

} 

は、私はあなたがsetIntervalを使用できることを承知していますが、それは新しい関数を経る必要があり、あなたはそれがないときに起動するには、同じ機能で、特定のジャバスクリプトを指定することはできません。

提案はありますか?

ありがとうございます!

答えて

11

setInterval()またはsetTimeout()を繰り返し使用する必要があります。それはあなたが将来のある時点でjavascriptで何かをする方法です。

これらのいずれのタイマー機能でも何ができるかに制限はありません。どうしてそんなことができないと思っているのですか?あなたはそれを避けようとしていますか?

var newsArray = []; // your code puts strings into this array 
var curNewsIndex = -1; 

var intervalID = setInterval(function() { 
    ++curNewsIndex; 
    if (curNewsIndex >= newsArray.length) { 
     curNewsIndex = 0; 
    } 
    setTickerNews(newsArray[curNewsIndex]); // set new news item into the ticker 
}, 5000); 

またはそれはこのように行うことができます:

var newsArray = []; // your code puts strings into this array 
var curNewsIndex = -1; 

function advanceNewsItem() { 
    ++curNewsIndex; 
    if (curNewsIndex >= newsArray.length) { 
     curNewsIndex = 0; 
    } 
    setTickerNews(newsArray[curNewsIndex]); // set new news item into the ticker 
} 

var intervalID = setInterval(advanceNewsItem, 5000); 
+0

x( 'setInterval(" x "、1000);')にif文があり、firebugがエラーを返しました。 – iosfreak

+0

@ phpnerd211:それは間違っています。引用符を削除します。 – alex

+0

'setInterval()'は最初の引数としてjavascript関数または文字列をとります。関数名でも匿名関数宣言でもかまいません。それは文字列内のコードであってもかまいませんが、これは最善の方法ではありません。上記の私の例を参照して、インラインの無名関数を使用する私の答えに追加しました。 – jfriend00

5

あなたは、可能な限り使用のsetTimeoutべきここ

は、擬似コードの例です。関数がインターバルよりも実行に時間がかかる場合は、一定の100%CPU使用状況になることがあります。

は、このコードを試してみてください。 http://jsfiddle.net/wdARC/

var stories = ['Story1','Story2','Story3'], 
    i = -1; 
(function f(){ 
    i = (i + 1) % stories.length; 
    document.write(stories[ i ] + '<br/>'); 
    setTimeout(f, 5000); 
})(); 

あなたの関数でdocument.writeを交換してください。

+0

なぜsetIntervalではなくsetTimeoutを使用するべきですか? – Gisheri

関連する問題