Avatar billede Slettet bruger
28. april 2006 - 16:41 Der er 7 kommentarer og
1 løsning

Stoppe timeout?

Hejsa

Hvodan kan jeg stoppe en timeout?

Hvis jeg har en function som kører det her:
setTimeout('slidenext(' + secondinter + ')', 30000);

hvordan kan jeg så have en "fortrydelsesknap" som kan stoppe denne timeout?

\Dan
Avatar billede softspot Forsker
28. april 2006 - 16:44 #1
du skal gemme det handle som setTimeout returnerer og bruge det som parameter til clearTimeout.

var timerID = setTimeout('slidenext(' + secondinter + ')', 30000);


og så når du vil aflyse timeout'et, kalde

clearTimeout(timerID);
Avatar billede Slettet bruger
28. april 2006 - 16:48 #2
OK!
Men hvordan starter jeg den så når det er defineret som en variabel i stedet?

\Dan
Avatar billede Slettet bruger
28. april 2006 - 17:01 #3
- Den metode virker altså ikke umiddelbart - her er min kode:
<script language="Javascript">
function slidenext(tid){
document.getElementById('nextpic').style.visibility='';
document.getElementById('nextpic').style.position='relative';
document.location=('<%=request.servervariables("script_name")%>?id=<%=nextpicID%>&mode=slideshow&timer=' + tid + '');
}
function slideshow(){
var secondinter = document.getElementById('slidesecond').value;
document.getElementById('time1').disabled='disabled';
document.getElementById('time2').disabled='disabled';
document.getElementById('time3').disabled='disabled';
document.getElementById('time4').disabled='disabled';
document.getElementById('time5').disabled='disabled';
document.getElementById('startslide').disabled='disabled';
document.getElementById('stopslide').disabled='';
var timerID = setTimeout('slidenext(' + secondinter + ')', secondinter);



}
function stopslide(){
clearTimeout(timerID);
document.getElementById('time1').disabled='';
document.getElementById('time2').disabled='';
document.getElementById('time3').disabled='';
document.getElementById('time4').disabled='';
document.getElementById('time5').disabled='';
document.getElementById('startslide').disabled='';
document.getElementById('stopslide').disabled='disabled';
}

</script>

Her har jeg funktionen som hedder "stopslide()" hvordan skal den se ud for at den stopper den ovenstående nedtælling?

\Dan
Avatar billede horsmark Nybegynder
28. april 2006 - 18:12 #4
du skal lige erklære din timerId uden for funktionsniveau for at kunne kalde den globalt

var timerId

function stopslide(){
clearTimeout(timerID);
...
}
Avatar billede Slettet bruger
28. april 2006 - 18:20 #5
hmm...

- det forstår jeg ikke helt! For hvordan skal funktionen "slideshow" så se ud, når man gerne vil starte timeren?

\Dan
Avatar billede horsmark Nybegynder
28. april 2006 - 18:24 #6
<script language="Javascript">
var timerID
...din resterende kode...

function slideshow(){
var secondinter = document.getElementById('slidesecond').value;
document.getElementById('time1').disabled='disabled';
document.getElementById('time2').disabled='disabled';
document.getElementById('time3').disabled='disabled';
document.getElementById('time4').disabled='disabled';
document.getElementById('time5').disabled='disabled';
document.getElementById('startslide').disabled='disabled';
document.getElementById('stopslide').disabled='';
timerID = setTimeout('slidenext(' + secondinter + ')', secondinter);
}

...osv

</script>
Avatar billede Slettet bruger
02. maj 2006 - 17:17 #7
Mange tak for hjælpen!

Jeg har nu fået det til at virke! Smid et svar horsmark!

\Dan
Avatar billede horsmark Nybegynder
02. maj 2006 - 17:23 #8
her :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester