这是我的代码,但我想要一个无限循环。请帮忙,保持温柔。解释将代码放在哪里,因为我不知道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 :(得分: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
变量而不是硬编码函数中的最大值(显然这是可选的)setTimeout()
的评论,以消除其功能如setInterval()
setTimeout()
的调用以传递对函数的引用而不是字符串 - 它以任何一种方式工作,但传递函数引用不会丢失范围(这里不重要)并且更快执行