我使用一个无止境的循环 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 )
但这是行不通的。
1条答案
按热度按时间zu0ti5jz1#
问题在于
间隔只计算一次,而不是在每个循环上。
如果将回调移到它自己的函数,则可以从初始settimeout调用它,然后从第一次调用的setinterval调用它,例如: