Avatar billede krogstrup Nybegynder
27. juli 2003 - 13:15 Der er 16 kommentarer og
2 løsninger

Hvordan anullerer man en setTimeout ?

Jeg har viser via en funktion et lag dynamisk. Ved mouseOut starter jeg en funktion som via setTimeout venter 3 sekunder med at skjule laget igen.

Men hvis brugeren blot kort fører musen væk fra laget og tilbage igen inden de 3 sekunder er gået, bliver laget jo alligevel skjult af min mouseOut funktion.

Hvordan laver jeg en funktion til mouseOver som sikrer at min mouseOut ikke skjuler laget efter 3 sekunder.

Håber ovenstående giver mening ???
Avatar billede krogstrup Nybegynder
27. juli 2003 - 13:17 #1
UPS: "Jeg har viser" skulle bare være "Jeg viser"
Avatar billede dreamcode Nybegynder
27. juli 2003 - 13:21 #2
Cancels a time-out that was set with the setTimeout method.

Syntax
window.clearTimeout(iTimeoutID)

Parameters
iTimeoutID Required. Integer that specifies the time-out setting returned by a previous call to the setTimeout method.
Avatar billede mikoalngelo Nybegynder
27. juli 2003 - 13:22 #3
clearTimeout();
mener jeg...
Avatar billede dreamcode Nybegynder
27. juli 2003 - 13:22 #4
dvs ..

var a = window.setTimeout(hvad du nu har her);

senere

window.clearTimeout(a);
Avatar billede krogstrup Nybegynder
27. juli 2003 - 13:41 #5
hvordan laver jeg et tjek på om "a" eksisterer før jeg laver en

window.clearTimeout(a)

så jeg ikke få en fejl hvis denne variabel slet ikke er sat endnu
Avatar billede mikoalngelo Nybegynder
27. juli 2003 - 13:45 #6
if(a)
window.clearTimeout(a)
Avatar billede krogstrup Nybegynder
27. juli 2003 - 13:48 #7
hmmm, kan jeg godt læse "a", hvis denne er sat i en anden funktion ???

Jeg bruger disse 2 funktioner:

function showLayer2(layer) {
if(a) {
window.clearTimeout(a);
}
}

function hideLayer(layer) {
theLayer = layer
var a = window.setTimeout("document.getElementById(theLayer).style.display='none';",1000);
}

Men når showLayer2 aktiveres får jeg hver gang at vide at "a is not defined"

?!?
Avatar billede mikoalngelo Nybegynder
27. juli 2003 - 13:50 #8
Du definerer jo a lokalt i functionen hideLayer, så du skal definere den globalt først:
var a;
uden for nogen funktion.
Avatar billede krogstrup Nybegynder
27. juli 2003 - 15:17 #9
selvfølgelig :-)

Tak for hjælpen - smider du ikke også et svar mikoalngelo ?
Avatar billede mikoalngelo Nybegynder
27. juli 2003 - 15:22 #10
Ok...
Avatar billede krogstrup Nybegynder
27. juli 2003 - 15:36 #11
takker for hjælpen :-)
Avatar billede krogstrup Nybegynder
27. juli 2003 - 15:39 #12
lige et lille side spm:

Hvorfor virker dette:

function hideLayer(layer) {
theLayer = layer
myTimeout = window.setTimeout("document.getElementById(theLayer).style.display='none';",500);
}

Men IKKE dette:

function hideLayer(layer) {
myTimeout = window.setTimeout("document.getElementById(layer).style.display='none';",500);
}

Hvorfor kan script 2 ikke finde ud af at indsætte "layer" som parameter ?
Avatar billede dreamcode Nybegynder
27. juli 2003 - 16:09 #13
fordi funktionen ikke bliver kaldt med det samme ... det der står i "" inde i setTimeout kan du betragte som noget helt isoleret, og layer er en lokal variabel i funktionen hvorimod theLayer er defineret i globalt scope, og kan tilgås alle steder fra!

-DC
Avatar billede mikoalngelo Nybegynder
27. juli 2003 - 16:16 #14
skriv " + layer + "
i stedet for layer
Avatar billede krogstrup Nybegynder
27. juli 2003 - 16:44 #15
mikoalngelo >>>
Det har jeg prøvet - det virker ikke !
Avatar billede mikoalngelo Nybegynder
27. juli 2003 - 17:02 #16
Nå, det var et forsøg værd...
Og dog, vis lige hvad du skriver
Avatar billede krogstrup Nybegynder
27. juli 2003 - 17:34 #17
function hideLayer(layer) {
myTimeout = window.setTimeout("document.getElementById(" + layer + ").style.display='none';",500);
}
Avatar billede mikoalngelo Nybegynder
27. juli 2003 - 17:43 #18
Øv, så virker det jo ikke...
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