2011-03-28 58 views
0

我有以下代码:如何让我的幻灯片重复播放?

<script type="text/javascript"> 
var image1=new Image() 
image1.src="images/natandadam.jpg" 

var image2=new Image() 
image2.src="images/gardaa.jpg" 

var image3=new Image() 
image3.src="images/marmaris.jpg" 

var image4=new Image() 
image4.src="images/gardab.jpg" 

var image5=new Image() 
image5.src="images/engagement.jpg" 

var image6=new Image() 
image6.src="images/gardac.jpg" 

var image7=new Image() 
image7.src="images/natandadamlake.jpg" 

//--> 
</script> 

<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<7) { 
     step++; 
    } else { 
     step=1; 
    } 

    //call function "slideit()" every 2.5 seconds 
    setTimeout("slideit()",2500); 
} 

slideit(); 
//--> 
</script> 

...这称之为:

<img style="border:6px double #545565;" src="gardaa.jpg" name="slide" width=600 height=400> 

我希望它继续通过图像跳跃,但是它停止在最后一个。它只有三张图像时才重复使用;现在我增加了更多的停止。

我该如何改变以使它们重复?

+0

如果你能这样做,我强烈建议使用jQuery来做到这一点。照片画廊有无数的插件,而且它们通常很容易使用。 – Ender 2011-03-28 21:12:03

+0

这个代码基本上做了一切错误的事情,可以做什么错:不使用数组在适当的时候,使用eval时,完全不必要的,传递一个字符串setTimeout(并因此使用eval隐式),混合分号和常规代码。 – ThiefMaster 2011-03-28 21:22:35

+1

OP从本教程中直接翻录:http://www.javascriptkit.com/howto/show2.shtml。那个网站让我的皮肤爬行... – Ender 2011-03-28 21:24:44

回答

3

您可以简化您的脚本颇有几分:

<script type="text/javascript"> 
var images ="natandadam.jpg,gardaa.jpg,marmaris.jpg,gardab.jpg,engagement.jpg,gardac.jpg,natandadamlake.jpg".split(",") 
var step=1 

function slideit(){ 
    document.images.slide.src="images/" + images[step] 
    step++ 
    if(step>images.length) { 
     step = 1 
    } 
    setTimeout(function(){slideit()},2500); 
} 

slideit(); 

</script> 

一些提示:

1 - 你不需要使用<!--//-->隐藏自己的脚本。需要的唯一浏览器在90年代死亡。

2 - 不要使用eval(),这是邪恶的。

3 - 由于图像现在在一个数组中,因此您可以根据需要选择添加或删除以及许多图像,而无需使用if (step<7)。代码只是检查数组的长度。

4 - 在setTimeout中使用所谓的匿名函数而不是引用代码。引用代码在内部使用eval()。