Categories: MSDN / DotNet / Java / Scripts / Linux / PHP Ask - La ask - La Answer

How can I *break* out of this JS loop?

This is a fairly simple slideshow, but it is an infinite loop. How can I "break" out of it when I've displayed the last image? I've tried every variation of
-break- and -continue- that I know of.

All suggestions welcome.

============================

<script language="JavaScript">

// Duration of image (in milliseconds)
var slideShowSpeed = 5000

// Duration of crossfade (in seconds)
var crossFadeDuration = 3

var Pic = new Array()

Pic[0] = 'p01.jpg'
Pic[1] = 'p02.jpg'
Pic[2] = 'p03.jpg'
Pic[3] = 'p04.jpg'
Pic[4] = 'p05.jpg'
Pic[5] = 'p06.jpg'

var t
var j = 0
var p = Pic.length
var preLoad = new Array()

for (i = 0; i < p; i++)
{
preLoad[i] = new Image()
preLoad[i].src = Pic[i]
}

function runSlideShow(){
if (document.all && document.images.SlideShow.filters){
document.images.SlideShow.style.filter="blendTrans(duration=2)"
document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
document.images.SlideShow.filters.blendTrans.Apply()
}
document.images.SlideShow.src = preLoad[j].src
if (document.all && document.images.SlideShow.filters){
document.images.SlideShow.filters.blendTrans.Play()
}
j = j + 1
if (j > (p-1)) j=0
t = setTimeout('runSlideShow()', slideShowSpeed)
}
//-->
</script>

===================================

Thanks for your help.

Uncle Richard
[1691 byte] By [Uncle Richard] at [2007-11-11 8:32:24]
# 1 Re: How can I *break* out of this JS loop?
use a For loop for the in the function runSlideShow() to show the image?

as in:

function runSlideShow(){

for (j= 0; j < p; j++)
{
if (document.all && document.images.SlideShow.filters){
document.images.SlideShow.style.filter="blendTrans(duration=2)"
document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
document.images.SlideShow.filters.blendTrans.Apply ()
}
document.images.SlideShow.src = preLoad[j].src
if (document.all && document.images.SlideShow.filters){
document.images.SlideShow.filters.blendTrans.Play( )
}
}

dose that helps?

or you could take setTimeout() out from the function runSlideShow(). put it at the end
[william] at 2007-11-11 23:42:34 >
# 2 Re: How can I *break* out of this JS loop?
Thank you, William, for taking the time to figure out a solution for me.

I appreciate it very much.

Uncle Richard
Uncle Richard at 2007-11-11 23:43:39 >