【问题标题】:Change image in HTML page every few seconds每隔几秒更改一次 HTML 页面中的图像
【发布时间】:2012-12-20 15:55:52
【问题描述】:

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

<?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>

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

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

【问题讨论】:

  • 你没有任何名为startTimer的函数。
  • 使用 setInterval() 你不需要 setTimeout() 并且你不需要在每次滴答后重新设置它。

标签: javascript html image timer


【解决方案1】:

正如我在评论中发布的那样,您不需要同时使用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>

【讨论】:

  • 好的,谢谢你成功了!!!!但我也想知道我是否可以添加一个网络和以前的图像来翻阅图像?我不知道该怎么做
  • 已编辑,只需添加两个按钮即可触发 onclick 甚至调用 displayNextImage() 和 displayPreviousImage()。
  • 啊!我仍然停留在同一张照片上!我的浏览器有问题吗??
  • 源代码出错(缺少function关键字),已修复。
【解决方案2】:

下面将每 10 秒更改一次链接和横幅

   <script>
        var links = ["http://www.abc.com","http://www.def.com","http://www.ghi.com"];
        var images = ["http://www.abc.com/1.gif","http://www.def.com/2.gif","http://www.ghi.com/3gif"];
        var i = 0;
        var renew = setInterval(function(){
            if(links.length == i){
                i = 0;
            }
            else {
            document.getElementById("bannerImage").src = images[i]; 
            document.getElementById("bannerLink").href = links[i]; 
            i++;

        }
        },10000);
        </script>



<a id="bannerLink" href="http://www.abc.com" onclick="void window.open(this.href); return false;">
<img id="bannerImage" src="http://www.abc.com/1.gif" width="694" height="83" alt="some text">
</a>

【讨论】:

    【解决方案3】:

    setTimeout("changeImage()", 30000); 更改为setInterval("changeImage()", 30000); 并删除var timerid = setInterval(changeImage, 30000);

    【讨论】:

      【解决方案4】:

      在帖子的当前编辑版本中,您在每次更改结束时调用setInterval在每次新迭代中添加一个新的“更改者”。这意味着在第一次运行后,其中有一个在内存中滴答作响,运行 100 次后,100 个不同的转换器每秒更改 100 次图像,完全破坏性能并产生令人困惑的结果。

      您只需“启动”setInterval 一次。将其从函数中移除并将其放在 onload 中,而不是直接调用函数。

      【讨论】:

        【解决方案5】:

        您可以在开头加载图片并更改 css 属性以显示每张图片。

        var images = array();
        for( url in your_urls_array ){
           var img = document.createElement( "img" );
           //here the image attributes ( width, height, position, etc )
           images.push( img );
        }
        
        function player( position )
        {
          images[position-1].style.display = "none" //be careful working with the first position
          images[position].style.display = "block";
          //reset position if needed
          timer = setTimeOut( "player( position )", time );
        }
        

        【讨论】:

          【解决方案6】:

          用javascript与左垂直可点击缩略图交换图像的最佳方式

          脚本文件: 函数 swapImages() {

              window.onload = function () {
                  var img = document.getElementById("img_wrap");
                  var imgall = img.getElementsByTagName("img");
                  var firstimg = imgall[0]; //first image
                  for (var a = 0; a <= imgall.length; a++) {
                      setInterval(function () {
                          var rand = Math.floor(Math.random() * imgall.length);
                          firstimg.src = imgall[rand].src;
                      }, 3000);
          
          
          
                      imgall[1].onmouseover = function () {
                           //alert("what");
                          clearInterval();
                          firstimg.src = imgall[1].src;
          
          
                      }
                      imgall[2].onmouseover = function () {
                          clearInterval();
                          firstimg.src = imgall[2].src;
                      }
                      imgall[3].onmouseover = function () {
                          clearInterval();
                          firstimg.src = imgall[3].src;
                      }
                      imgall[4].onmouseover = function () {
                          clearInterval();
                          firstimg.src = imgall[4].src;
                      }
                      imgall[5].onmouseover = function () {
                          clearInterval();
                          firstimg.src = imgall[5].src;
                      }
                  }
          
              }
          
          
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-24
            • 2010-12-17
            • 1970-01-01
            • 2011-12-07
            • 2015-05-07
            相关资源
            最近更新 更多