Funktion mit setTimeout() blockieren?!
guido bayer
- javascript
0 Mirko Hansen0 Salokin
hi,
ich möchte wegen beim Aufruf einer onClick-Funktion eine onMouseOut-Funktion auf dem gleichen (href-)Bild für genau 4 Sekunden blockieren und versuche gerade, das mit setTimeout() zu machen.
im Moment so:
/*
var rollover = "1";
function blockiere() {
rollover = "0";
MM_swapImage('Play','','usw_pics/play_ani.gif',1);
setTimeout("MM_swapImgRestore()",4000);
rollover = "1";
}
*/
obwohl rollover den jeweils richtigen Wert hat, wird die Funktion "swapRestore()" nicht 4 sekunden lang blockiert.
was habe ich übersehen/falsch gedacht?
gruss,
guido
Hallo Guido!
setTimeout("MM_swapImgRestore()",4000);
Hier liegt der Fehler. Bei deinem Skript gehst du davon aus, dass das Skript an dieser Stelle für 4 Sekunden anhält, dann deine Funktion im setTimeout aufruft, und dann die eigentliche Funktion fortsetzt. Der setTimeout-Befehl funktioniert aber leider ein bisschen anders. Er macht quasi einen Prozess-Split. Ein Prozess läuft hinter dem setTimeout weiter, führt also dein rollover="1"; aus und die Funktion ist damit beendet. Der zweite Prozess durchläuft die "Innerein" vom setTimeout, wartet also erstmal 4 Sekunden und führt dann die dort definierte Funktion auf.
Ich hoffe, dass das einigermaßen verständlich erklärt war ;-)
MfG,
Mirko Hansen
Hi,
ich möchte wegen beim Aufruf einer onClick-Funktion eine onMouseOut-Funktion auf dem gleichen (href-)Bild für genau 4 Sekunden blockieren und versuche gerade, das mit setTimeout() zu machen.
<script type="text/javascript">
var onMouseoutBlocked = false
function proceedOnClick() {...}
function proceedOnMouseout() {
if (onMouseoutBlocked == false) ...}
</script>
<a href="#" onClick="proceedOnClick();onMouseoutBlocked=true;window.setTimeout('onMouseoutBlocked=false',4000);return false" onMouseout="proceedOnMouseout()"><img ...></a>
Salokin