我有一个网站,需要加入新闻滚动条。目前,我有一个数组来填充它,每隔x秒,我希望新闻故事会更换。
function startNews(stories) {
}
我知道你可以使用
setInterval
,但它必须通过一个新的函数,并且在同一函数中无法指定要触发的特定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%。
尝试以下代码: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
。
setInterval("x", 1000);
),然后 firebug 给了我一个错误。 - iosfreaksetInterval()
接受一个 JavaScript 函数或字符串作为其第一个参数。它可以是函数名称或匿名函数声明。它也可以是字符串中的代码,但这不是最好的方法。请参见我在答案中添加的示例,使用内联匿名函数。 - jfriend00