【发布时间】:2015-11-27 21:17:45
【问题描述】:
我正在尝试遍历一个数组。但是,我想在每个数组值之间添加 15 秒的延迟。这会将值 1 写入控制台,然后倒计时 15 秒并将值 2 写入控制台,依此类推。
我不确定该怎么做。我的代码现在只是在控制台上一次输出数字 15 到 1,没有实际倒计时,也没有数组值。
数组
["l3", "l4", "l5", "l6", "l7", "l8", "l9", "l10", "l11", "l12", "l13", "l14", "l15", "l16"]
代码
var adArray = [];
// get links with class adfu
var adfuClass = document.getElementsByClassName('adfu');
for (var i = 0; i < adfuClass.length; i++) {
var ids = adfuClass[i].id
var newIds = ids.replace(/tg_/i, "l");
adArray.push(newIds);
}
// get links with class ad30
var ad30Class = document.getElementsByClassName('ad30');
for (var i = 0; i < ad30Class.length; i++) {
var ids = ad30Class[i].id;
var newIds = ids.replace(/tg_/i, "l");
adArray.push(newIds);
}
// get links with class adf
var adfClass = document.getElementsByClassName('adf');
for (var i = 0; i < adfClass.length; i++) {
var ids = adfClass[i].id;
var newIds = ids.replace(/tg_/i, "l");
adArray.push(newIds);
}
// loop through array with all new ids
for (var i = 0, l = adArray.length; i < l; i++) {
var counter = 15;
var countDown = setTimeout(function() {
console.log(counter);
if (counter == 0) {
console.log(adArray[i]);
}
counter--;
}, 1000);
}
【问题讨论】:
-
看看我制作的这个小提琴中的
wait()函数:jsfiddle.net/9hBfs 这是一个模式,真的,setTimeout()本身就是迭代器,而不是for或while循环. -
就我个人而言,我喜欢使用
setInterval(相对于setTimeout)和一个队列(相对于索引器),但是......同样的想法。 -
@pst -
setInterval()可以工作,但对我来说,对这些类型的循环迭代自调用setTimeout()是最直接和最简单的方法。由于它的实用性和简单性,这可能是我最喜欢的模式之一。
标签: javascript