2012-09-30 126 views
0

我正在编程一个非常简单的JavaScript幻灯片,它不工作。我不想要jQuery。此代码显示5秒后的第一个图像,但不会循环显示其余图像。完整的代码如下,我只是不知道我做错了什么:JavaScript幻灯片不工作

<!DOCTYPE html> 
<html dir="ltr" lang="en"> 
    <head> 
     <title>JavaScript Slideshow</title> 
     <style> 
     #slider > img { display: none } 
     </style> 
    </head> 
    <body> 
     <div id="slider"> 
      <img src="img1.png"> 
      <img src="img2.png"> 
      <img src="img3.png"> 
      <img src="img4.png"> 
      <img src="img5.png"> 
     </div> 
     <script> 
      var s = document.getElementById("slider").getElementsByTagName("img"); 
      var c = s.length; 
      setInterval(function() { 
       s[(s.length++) % c].style.display="block"; 
      }, 5000); 
     </script> 
    </body> 
</html> 
+0

究竟是你想用'(s.length ++)%C' – jeremy

+0

我偷了它从我的另一个幻灯片做。 var image = [“img1.png”,“img2.png”,“img3.png”,“img4.png”,“img5.png”]; var count = image.length; (“幻灯片”)。setAttribute(“src”,image [(image.length ++)%count]);; },5000); – Solo

回答

1

您的代码中有几个错误。

  1. 您试图增加数组长度,并通过计数器对其进行取模。我敢打赌,你想这样做的其他方式:

    s[c % (s.length)].style.display="";

  2. 你不是躲在通过已经循环的图像,所以你的周期将只显示一次。

    var s = document.getElementById("slider").getElementsByTagName("img"); 
        var c = s.length; 
        setInterval(function() { 
         s[c % s.length].style.display=""; 
         s[(++c) % s.length].style.display="block"; 
        }, 5000); 
    
+0

哇我不是一个JavaScript专家,但努力尝试。 :) 有用!!! – Solo