Timeouts löschen
lousypoetry
- javascript
0 KD-one0 lousypoetry0 KD-one0 wahsaga0 KD-one0 lousypoetry0 wahsaga
Hallo!
Ich beschäftige mich grad mit dem Löschen von Timeouts und häng irgendwie fest.
Also:
ich hab eine Funktion, die ein Objekt ausblendet, die mit
onmouseover="window.setTimeout('verstecken()', 1000);"
aufgerufen wird. Evtl wird jedoch zwischen dem onmouseover-Ereignis und den 1000ms eine andere Funktion aufgerufen, von der aus ich den Timeout gerne löschen würde, da ich ihn dann nicht gebrauche.
Hab schon ein bisschen probiert, bekomm es aber nicht richtig hin, ich hab versucht, den Timeout in einer globalen Variablen zu speichern und ihn später dann mit clearTimeout(variable) zu löschen, aber irgendwie ist da was ganz falsch glaub ich...
Kann mir jemand (allgemein) helfen?
Danke!
Hallo lousypoetry,
definiere in deinem Script global einen Timer.
timer = false;
Dann kannst du den Timeout über den Timer aufrufen und auch wieder löschen.
onmouseover="timer=window.setTimeout('verstecken()', 1000);"
Und der Aufruf der anderen Funktion sieht dann so aus:
"window.clearTimeout(timer);deinFunktionsaufruf();"
Generelle Informationen zu deinem Vorhaben erhältst du hier: http://selfhtml.teamone.de/javascript/objekte/window.htm#set_timeout
http://selfhtml.teamone.de/javascript/objekte/window.htm#clear_timeout
Gruß
Kurt
definiere in deinem Script global einen Timer.
timer = false;
Dann kannst du den Timeout über den Timer aufrufen und auch wieder löschen.
Jau, vielen Dank, jetzt gehts so wie ich es wollte. Aber eine Frage noch:
timer = false;
wieso 'false'? Oder hätt ich auch zB
timer = 0;
schreiben können?
Hallo lousypoetry,
timer = false;
wieso 'false'? Oder hätt ich auch zB
timer = 0;
schreiben können?
Sorry, auf dem Gebiet bin ich auch nicht gerade sattelfest, aber imho macht es schon einen Unterschied, ob ich bool'sche Werte oder numerische Werte verwende. im Prinzip braucht es ja nur entweder/oder, wahr/falsch.
Funktionieren tut es aber auch mit 0.
Zum besseren Verständnis:
http://selfhtml.teamone.de/javascript/objekte/boolean.htm
http://selfhtml.teamone.de/javascript/objekte/number.htm
Zu dem Thema werden dir aber sicher einige der hier anwesenden JavaScript-Cracks weiterhelfen können, eine schlüssige Erklärung würde auch mich interessieren, da ich mir beinahe sicher bin, daß ich mit meinem Wissen auf diesem Gebiet nur an der Oberfläche kratze.
Gruß
Kurt
hi,
timer = false;
wieso 'false'? Oder hätt ich auch zB
timer = 0;
schreiben können?Sorry, auf dem Gebiet bin ich auch nicht gerade sattelfest, aber imho macht es schon einen Unterschied, ob ich bool'sche Werte oder numerische Werte verwende.
hier macht es eigentlich keinen grossen unterschied.
0 ergibt false, ebenso wie ein leerstring "".
1 ergibt true, 5 oder 67 ebenfalls, sowie "abc" oder "jodel" ebenfalls true ergeben.
du kannst also an jeder stelle, wo du eine variable mit
if(wert) oder
if(!wert)
abfragst, true/false, 0/1 oder auch ""/"blah" verwenden.
einen ersten unterschied bekomst du, wenn du statt 0 == false auch den _typ_ der variablen bzw. werte vergleichst.
dazu dient der ===-operator (seit javascript 1.2).
var werta = 0;
var wertb = false;
if(werta === false) // trifft nicht zu, da 0 ein nummerischer wert ist, false aber ein boolescher.
if(wertb === false) // trifft zu, wertb ist ebenfalls vom typ bool.
http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#vergleich
im Prinzip braucht es ja nur entweder/oder, wahr/falsch.
stimmt grundsätzlich.
nur wenn eine progammiersprache einem schon boolesche variablen anbietet, sollte man diese eigentlich auch nutzen, wenn es nur im ja/nein-werte geht.
gruss,
wahsaga
Hallo wahsaga,
Danke für die ausführliche Erklärung.
Wieder etwas an Verständnis zugewonnen! :-)
Gruß
Kurt
nur wenn eine progammiersprache einem schon boolesche variablen anbietet, sollte man diese eigentlich auch nutzen, wenn es nur im ja/nein-werte geht.
Was ich nicht verstehe ist, warum es _überhaupt_ um ja/nein-Werte geht. Ich dachte erst, das timer = false wär nur dazu da, um die Variable zu definieren (deklarieren? Ich weiß es grad nicht), daher meine Frage, ob
timer = 0;
genauso gut gewesen wäre. Aber warum sollte man denn hier mit boolschen Variablen arbeiten? Hätts
var timer; auch getan? :-/
hi,
Was ich nicht verstehe ist, warum es _überhaupt_ um ja/nein-Werte geht. Ich dachte erst, das timer = false wär nur dazu da, um die Variable zu definieren (deklarieren? Ich weiß es grad nicht), daher meine Frage, ob
timer = 0;
genauso gut gewesen wäre. Aber warum sollte man denn hier mit boolschen Variablen arbeiten? Hätts
var timer; auch getan? :-/
wenn es nur um das anlegen der variablen ging, hätte es
var timer;
natürlich auch getan.
siehe http://selfhtml.teamone.de/javascript/sprache/variablen.htm#definieren,
"Variablen können mit oder ohne weitere Wertzuweisung deklariert werden."
der rest bezüglich true/false versus 1/0 betrifft dich dann vermutlich weniger. dies konnte ich aus dem threadverlauf nicht rauslesen, und habe daher nur KD-ones frage bezüglich des unterschiedes true/false und 1/0 noch ein wenig ausschweifender beantwortet.
gruss,
wahsaga