幻灯片的无限循环

时间:2012-01-21 03:08:19

标签: javascript

这是我的代码,但我想要一个无限循环。请帮忙,保持温柔。解释将代码放在哪里,因为我不知道HTML。 如果你有一个更好的代码让我使用我会很感激,但我发现这在网上,它的工作除了无限循环。 这是一张2张图片幻灯片。

<script type="text/javascript">
<!--
var image1=new Image()
image1.src="/v/vspfiles/assets/images/home1.jpg"

var image2=new Image()
image2.src="/v/vspfiles/assets/images/home2.jpg"
//-->
</script>


<div style="text-align: left;"><br></div><div style="text-align: center;"><img           src="http://xvrlm.lhcjd.servertrust.com/v/vspfiles/assets/images/home2.jpg" name="slide"    width="610" height="78">
<script>
<!--

//variable that will increment through the images
var step=1
function slideit(){

    //if browser does not support the image object, exit.
    if (!document.images)
        return
    document.images.slide.src=eval("image"+step+".src")
    if (step<3)
        step++
    else
        step=1
    //call function "slideit()" every 2.5 seconds
    setTimeout("slideit()",2500)
}
slideit()

//-->
</script>

1 个答案:

答案 0 :(得分:1)

如果您只有两张幻灯片,那么您需要确保step计数器仅通过值1和2 - 现有代码将通过值1,2 3(你确实有一个测试说if(step<3),但是在已经使用了值3之后它正在执行)。否则你非常接近。也许是这样的:

var step=1,
    maxStep = 2;

function slideit(){
    //if browser does not support the image object, exit.
    if (!document.images)
        return;
    document.images.slide.src=eval("image"+step+".src");
    if (step<maxStep)
        step++;
    else
        step = 1;
    //call self again in 2.5 seconds
    setTimeout(slideit,2500);
}
slideit();

我所做的更改如下:

  • 修复了您的if测试,使其不再处理您实际拥有的图像
  • 添加了maxStep变量而不是硬编码函数中的最大值(显然这是可选的)
  • 在任何地方添加分号 - 不,你不需要它们(对于这个 function_中的语句),但我更喜欢包含它们
  • 更新了有关setTimeout()的评论,以消除其功能如setInterval()
  • 的含义
  • 更新了对setTimeout()的调用以传递对函数的引用而不是字符串 - 它以任何一种方式工作,但传递函数引用不会丢失范围(这里不重要)并且更快执行