2012-01-21 42 views
1

这是我的代码,但我想要一个无限循环。请帮助,温柔。解释代码的完整位置,因为我不知道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> 
+0

什么是document.images.slide? – mowwwalker

+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变量,而不是硬编码函数内的最大(显然这是可选的)
  • 添加分号到处都是 - 不,你不能需要他们(为ST atements在 FUNCTION_),但我更喜欢将它们包括
  • 更新注释约setTimeout()删除,它的功能就像setInterval()
  • 更新调用setTimeout()寓意传递给函数的引用而不是字符串 - 它可以以任何方式工作,但传递函数引用不会丢失范围(这不是那个问题),并且执行起来更快