javascript - 图像元素在 src 更改时变为空?幻灯片

标签 javascript html

正在构建一个库,试图放入一个褪色图像 slider ,它显示了第一张图像,但是当它试图改变时我得到 TypeError: document.querySelector(...) is null。任何帮助都会很棒!

 export let styl = (function() {
  let slideIndex = 0;
  return {

    simpleSlideShow: function() {
      //automatic Slider
      let i;
      let slides = document.getElementsByClassName("mySlides");
      console.log("Image change");
      for (i = 0; i < slides.length; i++) {
        slides[i].style.display = "none";
      }
      slideIndex++;
      if (slideIndex > slides.length) {
        slideIndex = 1;
      }
      slides[slideIndex - 1].style.display = "block";
    },
    slideShowImageSetup: function(timeDelay, id, images) {
      //Building HTML with given array of images
      let i;
      for (i = 0; i < images.length; i++) {
        let elem = document.createElement("img");
        elem.setAttribute("alt", "image");
        elem.setAttribute("src", images[i]);
        elem.setAttribute("class", "mySlides");
        document.querySelector(id).appendChild(elem);
      }
      setTimeout(styl.simpleSlideShow, 1);
      setInterval(styl.simpleSlideShow, timeDelay);
      return 1;
    },
    fadingSlideShow: function(id, images) {
      document.querySelector(id).className += "fadeOut";
      setTimeout(function() {
        document.querySelector(id).src = images[slideIndex];
        document.querySelector(id).className = "";
        slideIndex++;
        if (slideIndex == images.length) {
          slideIndex = 0;
        }
        setTimeout(styl.fadingSlideShow(id, images), 3000);
      }, 1000);
    },
  };
})();

我在哪里调用函数

let images = [
  "https://cdn141.picsart.com/297231911148201.jpg?c256x256",
  "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQIfOEjoaYJNDHGmdgRa8EQp50VCicpK0R_0QpZLftE2zzgJky"
];

styl.fadingSlideShow("#slider", images);
<img id="slider"></img>

制作淡入淡出效果的css

#slider {
    opacity: 1;
    transition: opacity 3s;
}

#slider.fadeOut {
    opacity: 0;
}

最佳答案

您的第二个 setTimeout 没有将 ID 或图像发送到 styl.fadingSlideShow。

setTimeout(function(){styl.fadingSlideShow(id, images)}, 3000);

此外,将第二个 setTimeout 放在第一个里面。

关于javascript - 图像元素在 src 更改时变为空?幻灯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57305274/

相关文章:

javascript - "secure"为何是 ASP .NET Controller

javascript - 使字体大小取决于 div 大小

jquery - 文本旋转背景问题 - IE8 和 IE7

JavaScript -> 未捕获类型错误 : Failed to execute 'appendChild' on 'Node'

html - 如何在不手动设置宽度的情况下水平居中导航栏?

javascript - Grunt-injector 忽略来自 bower 依赖的 css 文件

javascript - Node.js:变量范围在 Electron 和非 Electron 脚本中的行为不同

css - 为什么我通过 -ms-filter 矩阵的偏斜没有在 IE 中应用?

javascript - 确定用户点击了哪个图表

javascript - 如何更改选项卡内的内容? [JS、JQUERY 和 HTML5]