javascript - 使用 javascript 更改计时器上的 "background-image:"不起作用

标签 javascript html css

我想知道您是否介意看一下下面的代码并告诉我哪里出错了。我对 javascript 几乎一无所知,但我能够编写一些应该做我想做的事情的代码。我有一个 div ID 可以制作全屏图像背景。我想每 5000 毫秒更改一次使用的图像。这是 JavaScript:

<script type="text/javascript">
      $(window).load(function() {          
          var i =0;
          var images = ['cover1.jpg','cover2.jpg'];
          var image = $('.cover_image');
          image.css('background-image', 'url(/img/cover1.jpg)');
          setInterval(function(){  
              image.fadeOut(1000, function () {
                  image.css('background-image', 'url(' + images [i++] +')');
                  image.fadeIn(1000);
              });
              if(i == images.length)
              i = 0;
          }, 5000);           
      });
</script>

这是正在使用的 CSS:

.cover_image {
background-repeat: no-repeat;
background-image: url("/img/cover1.jpg");
background-position: bottom center;
background-size: cover;
z-index: -3;
position: relative;
}

这是 HTML:

<div class="slide cover_image"></div>

最佳答案

当您使用 JQuery 时,您会遇到两个问题,以及您的“循环”

JQuery 加载

JQuery 并不总是与 Javascript 同时加载。因此,尝试检测何时加载 Javascript 以使用 JQuery 可能会让您使用 Javascript 代码,一旦您运行某些 JQuery 选择器,它就会崩溃。并燃烧。所以不要这样做。

为什么?

大多数现代浏览器都会同时原谅许多 Javascript 文件。这意味着 JQuery 在文档准备好时启动,并且您的代码尝试使用未初始化的 JQuery 库。这意味着您使用了不存在的东西。这就像试图读到结尾

如果您的唯一目标是阅读该句子的结尾,您也会崩溃。

零索引数组

此外,我对循环的工作方式进行了更改,因为它有些损坏。 Javascript 有 0 索引数组,因此尝试获取具有 2 个元素的数组的 .length 将返回 2,但元素位于 [0][1]

为什么?

这主要是因为计算机可以从零开始计数,所以在过去,浪费一点(字面上的)是没有意义的,而且做算术也需要更多的处理器密集型,所以从零开始是有意义的。我们可以切换到 1 索引数组,例如 Lua确实如此,但从零开始对计算机来说仍然更友好一些,而且许多程序员已经习惯了,改变这样的方面会破坏旧程序。

代码/TL;DR;

$(function(){  
    var i =0;
    var images = ['cover1.jpg','cover2.jpg'];
    var image = $('.cover_image');
    image.css('background-image', 'url(/img/cover1.jpg)');
    setInterval(function(){  
        image.fadeOut(1000, function () {
            image.css('background-image', 'url(' + images[i] +')');
            image.fadeIn(1000);
        });
        if(i == (images.length - 1)){
            i = 0; 
        } else {
            i++;
        }
    }, 5000);
})

关于javascript - 使用 javascript 更改计时器上的 "background-image:"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599805/

相关文章:

CSS 架构、7-1 和样式组件

css - 我的自定义 FontFace 不适用于博主

javascript - GeoJSON - 在表格中显示所有功能

javascript - setDate 为日期为零的日期,即星期日

javascript - Underscore debounce vs vanilla Javascript setTimeout

javascript - 这个 JavaScript 字符串有什么问题?

html - 如何找到div的滚动顶部值

javascript - Jquery/CSS3 转换链接只能部分工作

javascript - 无法访问监视处理程序 vuejs 中的数据变量

php - 如何更改 css 中的默认滚动条设计?