Javascript 循环的JS图像滑块在第二次迭代时不迭代

Javascript 循环的JS图像滑块在第二次迭代时不迭代,javascript,arrays,for-loop,Javascript,Arrays,For Loop,伙计们,这几天我一直在努力解决这个问题。我真的需要你的帮助,我想知道发生了什么。我的函数将迭代一次,然后返回到第一个值,如何使循环从零开始并继续循环。我尝试了多次循环,但都没有成功。谢谢你们 function run() { for (let i = 0; i <= imgArray.length; i++) { (function (e) { setTimeout(function () { if (i ==

伙计们,这几天我一直在努力解决这个问题。我真的需要你的帮助,我想知道发生了什么。我的函数将迭代一次,然后返回到第一个值,如何使循环从零开始并继续循环。我尝试了多次循环,但都没有成功。谢谢你们

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);
    };
}
函数运行(){

对于(设i=0;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
将重置为0零。

你能发布一些html来配合这个吗