我有一个网站,他们想要一个新闻自动收报机。目前,我有一个填充它的数组,每隔x秒,我想要改变新闻故事。
function startNews(stories) {
}
我知道您可以使用setInterval
,但它必须通过一个新函数,并且您不能在同一函数中指定某些javascript来触发它。
你有什么建议?
谢谢!
答案 0 :(得分:13)
您应该使用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);
答案 1 :(得分:8)
您应该尽可能使用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
替换为您的功能。