javascript - 每隔几秒更改 HTML 页面中的图像

标签 javascript html image timer

我想每隔几秒更换一次图片,这是我的代码:

<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml">
   <head>
      <title>change picture</title>
      <script type = "text/javascript">

    function changeImage()
    {
    var img = document.getElementById("img");
    img.src = images[x];
    x++;

    if(x >= images.length){
        x = 0;
    } 
   var timerid = setInterval(changeImage(), 1000);
}   }
var images = [], x = 0;
images[0] = "image1.jpg";
images[1] = "image2.jpg";
images[2] = "image3.jpg";

      </script>
   </head>
   <body onload = "changeImage()">
 <img id="img" src="startpicture.jpg">
   </body>
</html>

我的问题是它卡在了第一张图片上!

我也想尝试使用上一个和下一个按钮翻阅图片,但我不知道该怎么做。

最佳答案

正如我在评论中发布的那样,您不需要同时使用 setTimeout()setInterval(),而且您也有语法错误(一个额外的})。像这样更正您的代码:

(编辑添加两个函数以强制显示下一张/上一张图像)

<!DOCTYPE html>

<html>
   <head>
      <title>change picture</title>
      <script type = "text/javascript">
          function displayNextImage() {
              x = (x === images.length - 1) ? 0 : x + 1;
              document.getElementById("img").src = images[x];
          }

          function displayPreviousImage() {
              x = (x <= 0) ? images.length - 1 : x - 1;
              document.getElementById("img").src = images[x];
          }

          function startTimer() {
              setInterval(displayNextImage, 3000);
          }

          var images = [], x = -1;
          images[0] = "image1.jpg";
          images[1] = "image2.jpg";
          images[2] = "image3.jpg";
      </script>
   </head>

   <body onload = "startTimer()">
       <img id="img" src="startpicture.jpg"/>
       <button type="button" onclick="displayPreviousImage()">Previous</button>
       <button type="button" onclick="displayNextImage()">Next</button>
   </body>
</html>

关于javascript - 每隔几秒更改 HTML 页面中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975891/

相关文章:

javascript - 开放时间通知(07 :30 tot 22:00) Javascript

javascript - 使客户端在选项卡关闭 node.js 上发送断开连接事件

javascript - 我正在尝试将一些表单数据从一个 html 页面传递到另一个

html - 如何在 td 中正确定位相对 p 标签

javascript - 如何使用 AngularJS 在 &lt;input&gt; 字段中只允许数字 0-5?

java - 将 ImageIO.read 用于扩展 BufferedImage 的类

python - 使用 OpenCV 和 Python 提取楼层布局和阈值

javascript - Three.js 行不更新

javascript - 显示默认文本的评论框文本区域在用户聚焦时消失

Java 多线程图像缩放