我以这种方式使用each()
与setInterval
和setTimeout
的无限循环:
var links = [];
links = ['zuinfos-1-tab', 'zuinfos-2-tab', 'zuinfos-3-tab', 'allgemein-tab'];
var init = 5000
var z = 0;
var n = new Date().getTime()
setInterval(function() {
$(links).each(function(index, value) {
setTimeout(function() {
$('a#' + value).trigger('click');
var j = new Date().getTime()
var diff = j - n
console.log(z + 't' + index + 't' + value + 't' + diff);
}, 5000 * index)
});
z++;
}, init * 4)
一切都很好,但第一个setInterval
来得太晚了。我必须将它设置为init * 4
,因为每个循环中有四个元素。一开始应该从init * 1
开始。
我试过用这样的柜台:
}, z==1?init:init*4 )
但这并不奏效。
的问题
setInterval(..., z==1?init:init*4)
间隔只计算一次,而不是在每个循环上。
如果您将回调移动到它自己的函数,您可以从初始的setTimeout调用它,然后从第一次调用的setInterval调用它,例如:
function autoLinkClicker()
{
$(links).each(function(index, value) {
setTimeout(function() { ... }, 5000 * index);
});
}
setTimeout(function() {
autoLinkClicker();
setInterval(autoLinkClicker, init*4);
}, init);