伙计们,过去几天我一直在努力解决这个问题。我真的需要你的帮助,我想了解发生了什么。我的函数将迭代一次,然后返回到第一个值,我如何使它从零开始循环并保持循环。我试了几次循环,但都没有成功。谢谢你们!
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);
};
}
您可能想要的是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
被重置为零。