setTimeOut (ich raff dat jetzt net)
Palme
- javascript
Hallo,
ich habe folgende Funktion:
function farbe() {
window.setTimeout("document.getElementById('infotext').style.color = 'red'",3000);
window.setTimeout("document.getElementById('infotext').style.color = 'green'",3000);
window.setTimeout("document.getElementById('infotext').style.color = 'blue'",3000);
}
Diese Funktion soll also die Schriftfarbe nach 3 Sekunden wechseln, erst rot, dann 3 Sekunden später grün, und dann blau.
Die Funktion wechselt aber nach 3 Sekunden direkt nach blau.
Kann mir jemand erklären, warum die übrigen SetTimeOut's scheinbar ignoriert werden?
Grüße
Palme
Diese Funktion soll also die Schriftfarbe nach 3 Sekunden wechseln, erst rot, dann 3 Sekunden später grün, und dann blau.
Kann mir jemand erklären, warum die übrigen SetTimeOut's scheinbar ignoriert werden?
Moin, die Funktionen laufen parallel ab, die zweite wartet nicht erst bis die erste fertig ist, somit werden alle zur selben Zeit, nach 3 sec, gestartet. Richtig wäre also:
function farbe() {
window.setTimeout("document.getElementById('infotext').style.color = 'red'",3000);
window.setTimeout("document.getElementById('infotext').style.color = 'green'",6000);
window.setTimeout("document.getElementById('infotext').style.color = 'blue'",9000);
}
cu RFZ
Hallo,
Moin, die Funktionen laufen parallel ab, die zweite wartet nicht erst bis die erste fertig ist, somit werden alle zur selben Zeit, nach 3 sec, gestartet. Richtig wäre also:
Ach so ist das. Jetzt klappt es auch so wie ich wollte!
Vielen vielen Dank!!!
Grüße
Palme
Hi,
ich habe keinen Grund, nur eine Vermutung:
JavaScript wird zwar sequentiell ausgeführt, aber ein SetTimeout unterbricht nicht die Ausführung der Funktion farbe().
Du könntest umrüsten auf ein
window.setTimeout("farbe("red")",3000);
und dann in der Funktion farbe immer die Farbe aus dem Parameter zu verarbeiten
function farbe(farbname) {
document.getElementById('infotext').style.color = farbname;
//und dann der nächste
if (farbname == "red")
window.setTimeout("farbe("green")", 3000);
if (farbname == "green")
window.setTimeout("farbe("blue")", 3000);
}
MfG
Rouven
Hi,
function farbe() {
window.setTimeout("document.getElementById('infotext').style.color = 'red'",3000);
window.setTimeout("document.getElementById('infotext').style.color = 'green'",3000);
window.setTimeout("document.getElementById('infotext').style.color = 'blue'",3000);
}
Angenommen, der Aufruf der Funktion farbe findet beispielsweise um 17 Uhr 13, 40 Sekunden und 0 Millisekunden, also um 17:13:40.000 statt.
Dann forderst Du den Brauser mit
window.setTimeout("document.getElementById('infotext').style.color = 'red'",3000);
um 17:13:40.001 dazu auf, in 3000ms, also um 17:13:43.001, die Rotfärbung von infotext durchzuführen.
Außerdem forderst Du um 17:13:40.002 den Brauser mit
window.setTimeout("document.getElementById('infotext').style.color = 'green'",3000);
dazu auf, in 3000ms, also um 17:13:43.002, die Grünfärbung durchzuführen.
Und schließlich kommt noch um 17:13:40.003 die Aufforderung an den Browser,
um 17:13:43.003 die Blaufärbung durchzuführen
(jetzt mal einfach für das Beispiel angenommen, daß jeder setTimeout-Aufruf 1ms dauert).
Es wird also infotext um
17:13:43.001 rot gefärbt
17:13:43.002 grün gefärbt
17:13:43.003 blau gefärbt
Das geht dann so schnell, daß Du nur das Blau mitkriegst.
cu,
Andreas