Avatar billede ssv Nybegynder
15. marts 2010 - 17:07 Der er 1 kommentar og
1 løsning

Clear setTimeout fungerer ikke

Hej.

Jeg er rendt ind i et lille problem med noget jQuery jeg sidder og roder med.

Jeg kalder en funktion med en setTimeout når siden loades, men ved et klik på fx en knap, så skal denne funktion cleares.

Jeg bruger den i praksis til at vise en div, hvis brugeren ikke har gjort noget inden for xx sekunder. Hvis så brugeren klikker på en knap, vises den div jeg ville vise med funktionen med setTimeout. Problemet er bare at denne div der vises, bliver vist 2 gange, da den både bliver vist ved et klik på en knap, men også af funktionen med en setTimeout.

Nu er spørgsmålet bare; kan jeg cleare funktionen med setTimeout? Jeg har kigget på clearTimeout, men kan ikke få det til at spille.

Her er functionen med setTimeout:

function reveal(time){
    setTimeout(function(){
        $('#overlay').fadeIn(speed);
    showAlert = false;
    }, time);
};

Og den kalder jeg så ved:

reveal(10000);
Avatar billede FrederikBache Nybegynder
15. marts 2010 - 19:44 #1
Du skal bruge returværdien fra setTimeout til at cleare den:

var timeout = setTimeout(...);
clearTimeout(timeout);

Så du kunne gøre noget i denne stil:

function reveal(time){
    return setTimeout(function(){
        $('#overlay').fadeIn(speed);
    showAlert = false;
    }, time);
};

var timeout = reveal(10000);
...
clearTimeout(timeout);
Avatar billede ssv Nybegynder
16. marts 2010 - 12:18 #2
Det virker jo perfekt. Tak for hjælpen :-)
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