初始化动态背景

initializing a dynamic background

我的代码做了什么:


<div id="background" class="text-center background">

    <script type = "text/javascript">
        var background = document.getElementById("background");
        var currentPos = 0;
        var imagesb = ["/images/indeximg0.jpg", "/images/indeximg11.jpg", "/images/indeximg33.jpg", "/images/indeximg44.jpg", "/images/indeximg55.jpg"], i = 0;

        function changeimage()
        {
            if (++currentPos >= imagesb.length)
                currentPos = 0;

            background.style.backgroundImage = "url(" + imagesb[currentPos] + ")";
        }
        setInterval(changeimage, 3000);
    </script>

</div>

我想要它做什么:

我试过的:

这解决了显示第一张图片但 3 秒延迟仍然存在的问题。我也不喜欢这种方式,因为如果我在列表中添加或删除图像,我将不得不手动更改 currentPos


<script type = "text/javascript">
    background.style.backgoundImage= "url(/images/indeximg0.jpg)";
</script>

没有任何变化。还有3秒延迟

你应该

  1. setInterval()
  2. 之前调用函数一次
  3. 执行 ++currentPos 时实际上是在递增变量,因此第一次设置背景时,值已经是 1。最简单的更改方法是在 [=15= 之前设置背景] 测试。

var background = document.getElementById("background");
var currentPos = 0;
var imagesb = ["https://via.placeholder.com/100", "https://via.placeholder.com/200", "https://via.placeholder.com/300"];

function changeimage() {

  background.style.backgroundImage = "url(" + imagesb[currentPos] + ")";
  
  if ((++currentPos) >= imagesb.length) {
    currentPos = 0;
  }
}

changeimage();
setInterval(changeimage, 1000);
body,
html {
  height: 100%;
  width: 100%;
  margin: 0;
}

.background {
  height: 100%;
  width: 100%;
}
<div id="background" class="text-center background"></div>