我有一个名为 RotatorNames 的数组。它包含随机的东西,但我们只说它包含 ["rotatorA","rotatorB","rotatorC"]
。
我想遍历数组,并且我想为每个项目触发一个点击事件。我有一些这样的工作,除了一切都立即触发。我如何强制循环等待几秒钟,然后再继续循环。
这是我的。
function Rotator() {
var RotatorNames = ["rotatorA","rotatorB","rotatorC"];
RotatorNames.forEach(function(entry){
window.setTimeout(function() {
//Trigger that elements button.
var elemntBtn = $('#btn_' + entry);
elemntBtn.trigger('click');
}, 5000);
});
}
您可以运行它来查看我的问题所在。 http://jsfiddle.net/BxDtp/ 此外,有时警报会执行 A、C、B 而不是 A、B、C。
最佳答案
虽然我确定其他答案有效,但我更愿意使用此设置:
function rotator(arr) {
var iterator = function (index) {
if (index >= arr.length) {
index = 0;
}
console.log(arr[index]);
setTimeout(function () {
iterator(++index);
}, 1500);
};
iterator(0);
};
rotator(["rotatorA", "rotatorB", "rotatorC"]);
演示: http://jsfiddle.net/BxDtp/4/
对我来说,这似乎比通过将“正确”值传递给 setTimeout
来让迭代正确排列更合乎逻辑。
这允许数组按顺序连续迭代。如果您希望它在经过一次后停止,请将 index = 0;
更改为 return;
。
关于javascript - 如何使用 setTimeout 或 setInterval 减慢循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16672561/