Javascript图片幻灯片

时间:2015-05-21 11:29:41

标签: javascript image slideshow

我正在为我的学校项目创建一个网站。我想在幻灯片中放一些图片,但由于某种原因,我的代码不起作用。这是我的代码

   <div class="row">
     <div class="col-md-12">
       <h3 class = "Contains">
          <script type = "text/javascript">
            var image1= new image()
            image1.src=images/truck1.png

            var image2= new image()
            image2.src=images/truck4.png

            var image3= new image()
            image3.src=images/truck7.png

          </script>
          <img src="images/truck1.PNG" name = "slide" width ="400" height ="400">

          <script>
            var step =1;

            function slideit(){
              document.images.slide.src=eval("image"+step+".src");
              if (step<3)
                step++;
              else
                step=1;

              setTimeout("slideit()", 2500);
            }

            slideit()
          </script>
     </h3>
</div>

2 个答案:

答案 0 :(得分:1)

如何逐步完成数组的一个非常基本而简单的示例

//Array of images
var Images = ['https://dummyimage.com/100x100/000/fff.jpg',
  'https://dummyimage.com/200x200/000/fff.jpg',
  'https://dummyimage.com/300x300/000/fff.jpg'
];
//Step counter
var step = 1;

function gallery() {
  //change image
  document.getElementById('Imgs').src = Images[step];
  //Or you can use - document.images.slide.src=Images[step];
  // is step more than the image array?
  if (step < Images.length - 1) {
    // No - add 1 for next image.
    step++;
  } else {
    // Yes - Start from the first image
    step = 0;
  }
}
//When the ready, set interval.
window.onload = setInterval(gallery, 2500);
<img id="Imgs" name="slide" src="https://dummyimage.com/100x100/000/fff.jpg" />

您正在尝试的方法将在浏览器控制台中返回以下错误。

  

未捕获的ReferenceError:未定义图像(匿名函数)

     

未捕获的TypeError:无法读取未定义的属性'src'

在使用javascript时,浏览器控制台是您最好的朋友。

如果您有任何疑问,请在下面留言,我会尽快给您回复。

如果你想坚持使用相同的方法,那就是:

var step = 1;
var image1 = new Image();
image1.src = "https://dummyimage.com/100x100/000/fff.jpg";
var image2 = new Image();
image2.src = "https://dummyimage.com/200x200/000/fff.jpg";
var image3 = new Image();
image3.src = "https://dummyimage.com/300x300/000/fff.jpg";

function slideit() {
  document.images.slide.src = window['image' + step].src;
  if (step < 3)
    step++;
  else
    step = 1;
  setTimeout(slideit, 2500);
}
slideit();
<div class="row">
  <div class="col-md-12">
    <h3 class="Contains">
      <img src="https://dummyimage.com/100x100/000/fff.jpg" name="slide" />
    </h3>
  </div>

我希望这会有所帮助。快乐的编码!

答案 1 :(得分:0)

您的问题很可能出在“imagex.src = xxxxxxx”中。图片网址是字符串,必须这样引用。所以它应该是:

image1.src="images/truck1.png"

此外,您尝试使用字符串而不是函数引用/名称调用setTimeout。它应该是:

setTimeout(slideit, 2500);

然而,setInterval在这里最好而不是setTimeout,因为它会重复调用一个函数。

除了JS之外,HTML部分还有一些怪癖。大多数情况下,你不应该使用H3来包装div。 H3通常用于页面子标题,而不是用于400x400图像^^

正如您在问题评论中所提到的,使用 eval 通常是一个坏主意。

要简化,您可以这样做:

<div class="row">
    <div class="col-md-12">
        <div class="Contains">
            <img src="images/truck1.PNG" name="slide" width="400" height="400">
            <script>
                var pictures = ["images/truck1.png",
                                "images/truck4.png",
                                "images/truck7.png"];

                var step = 0;

                function slideIt(){
                    if (step<3)
                        step++;
                    else
                        step=0;

                    document.images.slide.src=pictures[step];
                }

                setTimeout(slideit, 2500);
            </script>
        </div>
    </div>
</div>