javascript - 从外部 JS 文件加载时幻灯片显示不正确

标签 javascript css

我使用非常标准的代码在网站顶部显示幻灯片:

HTML:

  <body id="Top"
        onload="showSlides()">
    ...

    <div id="slides">
      <div id="slide1" class="slides fade"></div>
      <div id="slide2" class="slides fade"></div>
      <div id="slide3" class="slides fade"></div>
      <div id="slide4" class="slides fade"></div>
      <div id="slide5" class="slides fade"></div>
    </div>

    <div id="dotbox">
      <span class="dot"></span> 
      <span class="dot"></span> 
      <span class="dot"></span> 
      <span class="dot"></span> 
      <span class="dot"></span> 
    </div>

    ...

  </body>

JS:

/* Start a slideshow. */
var slideIndex = 0;

function showSlides()
{
  var i;
  var slides = document.getElementsByClassName("slides");
  var dots = document.getElementsByClassName("dot");

  for (i = 0; i < slides.length; i++)
  {
    slides[i].style.display = "none";  
  }

  slideIndex++;

  if (slideIndex > slides.length) 
  {
    slideIndex = 1
  }

  for (i = 0; i < dots.length; i++)
  {
    dots[i].className = dots[i].className.replace(" activedot", "");
  }

  slides[slideIndex-1].style.display = "block";  
  dots[slideIndex-1].className += " activedot";

  // Change image every 3 seconds
  setTimeout(showSlides, 3000);
}

幻灯片包含 5 张幻灯片;每张幻灯片淡出 3 秒,然后出现下一张幻灯片。这是控制淡入淡出的相关 CSS,这也是非常标准的:

CSS:

  /* Fading animation class */
  .fade
  {
    -webkit-animation-name: fade;
    -webkit-animation-duration: 3s;
    animation-name: fade;
    animation-duration: 3s;
  }

  /* Safari 4.0 - 8.0 */
  @-webkit-keyframes fade
  {
    from 
    {
      opacity: .4;
    } 

    to
    {
      opacity: .1;
    }
  }

  /* Standard syntax */
  @keyframes fade
  {
    from 
    {
      opacity: .4;
      filter: alpha(opacity=40);    /* For IE8 and earlier */
    } 

    to
    {
      opacity: .1;
      filter: alpha(opacity=10);    /* For IE8 and earlier */
    }
  }

当 JS 函数内部存储在 HTML 文件中时,幻灯片可以正常工作。

但是,当它存储在与 HTML 文件链接的外部 JS 文件中时,幻灯片中的初始 幻灯片无法正确显示。具体问题如下:
1) 幻灯片不是从第一张幻灯片开始的。当页面首次出现时,第 3 张幻灯片最先显示。
2) 然后,出现第一张幻灯片。但是,在显示下一张幻灯片之前,它的淡入淡出完成,然后不透明度增加到 1。
3) 此后,幻灯片播放正确。

因此,该问题是一个暂时性问题。一旦建立稳态,就没有问题。

我认为这可能是由于加载外部 JS 文件所花费的时间所致。

我该如何解决这个问题?

最佳答案

将您的代码初始化放在ready(function) 中 像这样

jQuery(document).ready(function(){
  //your code here
});

这将在 JS 文件完全加载后运行,因此不会干扰幻灯片。

关于javascript - 从外部 JS 文件加载时幻灯片显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55428976/

相关文章:

除 Firefox 之外的所有浏览器中的 Javascript 错误

javascript - jQuery - 当 id 是数组类型表示法时,ID 选择器需要帮助

javascript - 等距游戏 - 假视口(viewport)运动问题

javascript - 显示同一页面上多个位置的复选框总数

javascript - ReactJS多输入问题setState和state

javascript - ng-repeat images,找不到空图像,为什么?

css - 检测 float 溢出

javascript - 为什么 Jcrop-tracker 没有显示正确的位置?

css - 将 iframe 设置为固定页脚和页眉之间的全高

css - 您可以将宽度应用于 :before/:after pseudo-element (content:url(image))?