在javascript中设置循环数组的间隔?

在javascript中设置循环数组的间隔?,javascript,setinterval,Javascript,Setinterval,我有一个网站,他们希望在那里有一个新闻摘要。目前,我有一个数组填充它,每x秒,我希望新闻故事发生变化 function startNews(stories) { } 我知道您可以使用setInterval,但它必须经过一个新函数,并且不能在同一个函数中指定某些javascript在它执行时触发 你有什么建议 谢谢 您应该使用setInterval()或重复调用setTimeout()。这就是将来某个时候用javascript做某事的方式 使用这两个计时器函数都没有限制。你认为你做不到的是什么

我有一个网站,他们希望在那里有一个新闻摘要。目前,我有一个数组填充它,每x秒,我希望新闻故事发生变化

function startNews(stories) {

}
我知道您可以使用
setInterval
,但它必须经过一个新函数,并且不能在同一个函数中指定某些javascript在它执行时触发

你有什么建议


谢谢

您应该使用
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);

您应该尽可能使用setTimeout。如果函数的运行时间比间隔长,则可能会出现cpu使用率为100%的恒定情况

请尝试以下代码:

var stories=['Story1'、'Story2'、'Story3'],
i=-1;
(职能f(){
i=(i+1)%stories.length;
写作(故事[i]+'
'); 设置超时(f,5000); })();

替换
文档。用函数编写

我在x中有一个if语句(
setInterval(“x”,1000);
),firebug给了我一个错误。
setInterval()
将javascript函数或字符串作为第一个参数。它可以是函数名,也可以是匿名函数声明。它也可以是字符串中的代码,但这不是最好的方法。请参阅我在回答中添加的使用内联匿名函数的上面示例。为什么“应该”使用setTimeout而不是setInterval
var stories = ['Story1','Story2','Story3'], 
    i = -1;
(function f(){
    i = (i + 1) % stories.length;
    document.write(stories[ i ] + '<br/>');
    setTimeout(f, 5000);
 })();