更新 setInterval 值,为其自身设置间隔(不生成随机数)
Update setInterval value, with interval for itself (Not generating a random number)
与jQuery
我正在改变iframe
src
,每60秒(这很好用).
我的jQuery
:
$(document).ready(function(){
var array = ['http://link1.com', 'http://link2.com', 'http://link3.com'];
var locations = array;
var len = locations.length;
var iframe = $('#frame');
var i = 0;
setInterval(function () {
iframe.attr('src', locations[++i]);
}, 60000);
});
我的iframe
:
<iframe id="frame" src="http://link.com"></iframe>
我的 iframe src
函数工作正常,我想要实现的是,而不是 fixed delay
数字 (现在 60 秒),我也想更改 delay
值,每次 iframe src
已更新。
新的delay
号码将是随机号码,介于15和30[=43之间=]秒
间隔一经定义便无法更改。解决方法是链接 setTimeout()
调用,在每次调用之间生成随机延迟,如下所示:
var locations = ['http://link1.com', 'http://link2.com', 'http://link3.com'];
var i = 0;
setTimeout(setSrc, getDelay());
function setSrc() {
console.log(locations[++i % locations.length]);
setTimeout(setSrc, getDelay());
}
function getDelay() {
var delay = (Math.floor(Math.random() * 30) + 15) * 1000;
console.log('waiting: ' + delay);
return delay;
}
How can I make it so when loop is done, it stops?
在这种情况下,您可以检查是否 i > locations.length
然后不再调用该函数:
function setSrc() {
console.log(locations[++i]);
if (i < locations.length)
setTimeout(setSrc, getDelay());
}
与jQuery
我正在改变iframe
src
,每60秒(这很好用).
我的jQuery
:
$(document).ready(function(){
var array = ['http://link1.com', 'http://link2.com', 'http://link3.com'];
var locations = array;
var len = locations.length;
var iframe = $('#frame');
var i = 0;
setInterval(function () {
iframe.attr('src', locations[++i]);
}, 60000);
});
我的iframe
:
<iframe id="frame" src="http://link.com"></iframe>
我的 iframe src
函数工作正常,我想要实现的是,而不是 fixed delay
数字 (现在 60 秒),我也想更改 delay
值,每次 iframe src
已更新。
新的delay
号码将是随机号码,介于15和30[=43之间=]秒
间隔一经定义便无法更改。解决方法是链接 setTimeout()
调用,在每次调用之间生成随机延迟,如下所示:
var locations = ['http://link1.com', 'http://link2.com', 'http://link3.com'];
var i = 0;
setTimeout(setSrc, getDelay());
function setSrc() {
console.log(locations[++i % locations.length]);
setTimeout(setSrc, getDelay());
}
function getDelay() {
var delay = (Math.floor(Math.random() * 30) + 15) * 1000;
console.log('waiting: ' + delay);
return delay;
}
How can I make it so when loop is done, it stops?
在这种情况下,您可以检查是否 i > locations.length
然后不再调用该函数:
function setSrc() {
console.log(locations[++i]);
if (i < locations.length)
setTimeout(setSrc, getDelay());
}