图像每 30 秒更换一次 - 循环

Posted

技术标签:

【中文标题】图像每 30 秒更换一次 - 循环【英文标题】:Image change every 30 seconds - loop 【发布时间】:2011-03-16 22:29:37 【问题描述】:

我想在 30 秒后更改图像。我正在使用的 javascript 如下所示:

var images = new Array();
images[0] = "image1.jpg";
images[1] = "image2.jpg";
images[2] = "image3.jpg";
setTimeout("changeImage()", 30000);
var x = 0;

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

html

<img id="img" src="startpicture.jpg">

现在我还没有测试过这个,但如果我的计算是正确的,它会起作用:)

现在我还想要做一个“淡入淡出的过渡”,我想让图像的变化循环(在显示所有图像后重新启动)。

你们中有人知道怎么做吗?

【问题讨论】:

我以前用过这个 jQuery 插件:CrossSlide 它工作得很好,完全符合你的要求。 看看innerfade。 Here's an example 我想我用它来做你所追求的。 setTimeout 只调用一次;你正在寻找setInterval。运行的代码也应该是函数引用,而不是字符串。所以var timerid = setInterval(changeImage, 30000); 你说的完全正确! 【参考方案1】:

我同意为这样的事情使用框架,只是因为它更容易。我很快就破解了这个,只是淡出图像然后切换,在旧版本的 IE 中也不起作用。但正如您所见,实际淡入淡出的代码比 KARASZI István 发布的 JQuery 实现要长得多。

function changeImage() 
    var img = document.getElementById("img");
    img.src = images[x];
    x++;        
    if(x >= images.length) 
        x = 0;
     
    fadeImg(img, 100, true);
    setTimeout("changeImage()", 30000);


function fadeImg(el, val, fade) 
    if(fade === true) 
        val--;
     else 
        val ++;
           
    if(val > 0 && val < 100) 
        el.style.opacity = val / 100;
        setTimeout(function() fadeImg(el, val, fade); , 10);
    


var images = [], x = 0;
images[0] = "image1.jpg";
images[1] = "image2.jpg";
images[2] = "image3.jpg";
setTimeout("changeImage()", 30000);

【讨论】:

您可以使用一些简单的替代方法改进代码并节省空间:x = (x + 1) % images.length;val = val + (fade ? -1 : 1);var images = ["image1.jpg", "image2.jpg", "image3.jpg"];【参考方案2】:

你应该看看各种 javascript 库,它们应该能够帮助你:

mootools jQuery Dojo Toolkit prototype

都有教程,淡入淡出是基本用法。

例如在 jQuery 中:

var $img = $("img"), i = 0, speed = 200;
window.setInterval(function() 
  $img.fadeOut(speed, function() 
    $img.attr("src", images[(++i % images.length)]);
    $img.fadeIn(speed);
  );
, 30000);

【讨论】:

【参考方案3】:

setInterval 函数是必须使用的函数。 这是一个没有任何花哨的褪色选项的相同示例。每 30 秒更改一次图像的简单 Javascript。我假设图像保存在单独的图像文件夹中,因此 _images/ 出现在每个图像的开头。您可以根据需要设置自己的路径。

代码:

var im = document.getElementById("img");

var images = ["_images/image1.jpg","_images/image2.jpg","_images/image3.jpg"];
var index=0;

function changeImage()

  im.setAttribute("src", images[index]);
  index++;
  if(index >= images.length)
  
    index=0;
  


setInterval(changeImage, 30000);

【讨论】:

【参考方案4】:

只需使用 That。它很容易。

<script language="javascript" type="text/javascript">
     var images = new Array()
     images[0] = "img1.jpg";
     images[1] = "img2.jpg";
     images[2] = "img3.jpg";
     setInterval("changeImage()", 30000);
     var x=0;

     function changeImage()
     
                document.getElementById("img").src=images[x]
                x++;
                if (images.length == x) 
                
                    x = 0;
                
     
</script>

在正文中写下这段代码:-

<img id="img" src="imgstart.jpg">

【讨论】:

以上是关于图像每 30 秒更换一次 - 循环的主要内容,如果未能解决你的问题,请参考以下文章

每 30 秒运行一次 cron 作业的最佳方式是啥? [复制]

如何每 20 秒执行一次 bash 脚本? ,好用睡眠和循环?

Android - 每 5 秒循环一次部分代码

AudioUnit 每 30 秒录制一次故障

Laravel 5 每 30 秒安排一次作业

python循环控制间隔。