伙计们,最近几天我一直在努力解决这个问题。我真的需要您的帮助,我想了解发生了什么。我的函数将迭代一次,然后返回第一个值,如何使它从零开始循环并继续循环。我已经尝试了while循环,但是尝试失败了。谢谢你们!
function run() {
for (let i = 0; i <= imgArray.length; i++) {
(function (e) {
setTimeout(function () {
if (i == imgArray.length) {
i = 0;
}
imgContainer.style.background = imgArray[i];
}, 3000 * e);
})(i);
};
}
答案 0 :(得分:2)
您可能想要的是setInterval
。与setTimeout
仅执行一次不同,setInterval
在每个时间间隔(例如,每1秒)执行一次,直到您调用clearInterval()
。
使用此逻辑和一些模(%
)逻辑,我们可以做到:
var currentImage = 0;
//this will call `changeBackground` every 1 second
setInterval(changeBackground, 1000); //1000 ms = 1 sec
function changeBackground() {
currentImage = (currentImage + 1) % imgArray.length;
imgContainer.style.background = imgArray[currentImage];
}
%
或模为imgArray.length
除以currentImage + 1
的欧几里得除数的余数,它将始终是0到imgArray.length - 1
之间的值。每当currentImage + 1
等于imgArray.length
时,currentImage
都会重置为零。