javascript : clearInterval

Status
Niet open voor verdere reacties.

JeroenE

Terugkerende gebruiker
Lid geworden
20 mrt 2005
Berichten
1.950
Hallo,

Ik heb een script geschreven met als onderdeel een clearInterval.

Dat deel van het script ziet er als volgt uit :

PHP:
function startShow() {
	var slideShow = setInterval("imageCycle('+')",3000);
}
function stopShow() {
	clearInterval("slideShow");
}

De setInteval werkt perfect, maar de clearInterval doet het niet.
Iemand enig idee wat er mis is met het script?
 
Laatst bewerkt:
PHP:
var slideShow;
function startShow() {
 slideShow = setInterval("imageCycle('+')",3000);
 };
function stopShow() {
 clearInterval(slideShow);
 };

De quotes rondom slideShow bij clearInterval zijn weg.

De variabele slideShow is buiten de functie startShow gedeclareerd. Anders is het namelijk een lokale variabele die alleen binnen startShow bestaat, nu kan stopShow er ook bij.


Vr.Gr. Egel.
 
Dank je wel, Egel, voor je reactie.

Ik heb jouw aanpassingen geprobeert, maar de werking gaat nu als volgt :
Bij het aanroepen van startShow() verandert de afbeelding na 3 seconden zoals gevraagd in de functie, maar dan stop het.
Of de stopShow() werkt kan ik dus niet testen, maar ik veronderstel van wel.

:cool:
 
Met
<a href="Java*Script:imageCycle('+')">testimagecyclefunctie</a>
kun je makkelijk testen of de imageCycle functie werkt. Met
slideShow = setInterval("alert('Yo!')",3000);
test je startShow en stopShow.

Bij mij werkte ie, dus het is denk ik de imageCycle.

(wel ff het * bij Java*Script weghalen)


Gr. Egel.
 
Hier even de funtie van de imageCycle() :

PHP:
function ifZero(num) {
	return ((num <= 9) ? "0" + num : num);
}
var picNum =  1;
function imageCycle(dir) {
	stopShow();
	if (dir == "+") {
		if (picNum == 17) {
			picNum = 1;
		} else {
			picNum++;
		}
	} else {
		if (picNum == 1) {
			picNum = 17;
		} else {
			picNum--;
		}
	}
	var newIm = new Image();
	newIm = "images/ShowtimeSPF/bjtst" + ifZero(picNum) + ".jpg";
	document.bjtst.src = newIm;
}


Wat mij opgevallen is, is dat de imageCycle wel werkt als ik de stopShow er vantussen laat, of als ik slideShow definieer binnen de functie startShow.
Zowel met de startShow(), als met de pijltjes die de imageCycle direct aanroepen.
 
Laatst bewerkt:
Klopt! De stopShow() uit de imageCycle halen, die beperkt de imageCycle tot 1 keer.

Groet, Egel.
 
Thx Egel, het is opgelost.:thumb:

Greetz:cool:
 
ok! :)

Alleen moet de stopShow(); wel weer in de startshow functie staan, anders kan de imageCycle meerdere malen naast elkaar gestart worden, ongeveer zoals:
PHP:
var picNum = 1, picMax = 17, slideShow;

function imageCycle(dir) {
 picNum += dir;
 if (picNum > picMax) { picNum = 1;};
 if (picNum < 1) { picNum = picMax;};
 document.bjtst.src = 'images/ShowtimeSPF/bjtst' + (picNum < 10 ? '0' : '') + picNum + '.jpg';
 };

function stopShow() {
 clearInterval(slideShow);
 };

function startShow(dir) {
 stopShow();
 slideShow = setInterval('imageCycle(' + dir + ')',3000);
 };
Dat gebruik je dan met: startShow(-1) stopShow() startShow(+1)


Groet, Egel.
 
Dank je wel, zal da morgen proberen, maar momenteel lukt het al met het aanroepen van de stopShow() vanuit de knop op de webpagina.
Zal morgen ff uploaden en url meegeven zodat de site ff kan gechecked worden voor wie interesse heeft.
:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan