setTimeout: Fehler? Ich seh ihn einfach nicht!
Mario
- javascript
Hallo,
ich habe folgenden Code:
i = 0;
hallo(i);
function hallo(j)
{
zufall = Math.floor(Math.random()*banner.length);
if (zufall < 0)
{
zufall = 0;
}
if (zufall >= banner.length)
{
zufall = banner.length - 1;
}
document.write(zufall);
j++;
if (j < 3)
{
Wechsel = setTimeout('hallo(j)',2000);
}
}
die Funktion soll mir eigentlich nur 3mal eine Zufallszahl ausgeben, aber irgendwie geht es nicht. Ich bin schon ganz verzweifelt, es kommen Fehlermeldungen, mit denen ich nichts anfangen kann. Gibt es ne Möglichkeit, setTimeout ohne den ersten Parameter laufen zu lassen? Daß der Code an der Stelle einfach anhält und 3 sek Pause macht? Dann wär mir geholfen. Ich verzweifle noch dran...
Hallo,
ich habe folgenden Code:
i = 0;
hallo(i);function hallo(j)
{
zufall = Math.floor(Math.random()*banner.length);if (zufall < 0)
{
zufall = 0;
}
if (zufall >= banner.length)
{
zufall = banner.length - 1;
}document.write(zufall);
j++;
if (j < 3)
{
Wechsel = setTimeout('hallo(j)',2000);
}
}
bei dieser Variante kommt nach dem 1. Settimeout, daß j nicht definiert ist, ersetze ich j durchgängig durch i kommt: Methode erwartet. Ich weiß nicht, was das bedeuten soll...
document.write(zufall);
Du beschreibst hier das dokument neu und danach ist dein JS weg.
Du musst die Ausgabe entweder in ein eigenes Fenster oder Frame schreiben oder neu in das Dokument einfügen.
Struppi.
Hi,
Wechsel = setTimeout('hallo(j)',2000);
Flüchtigkeitsfehler! Du meinst natürlich:
Wechsel = setTimeout('hallo(' + j + ')', 2000);
Salokin
Hi,
Wechsel = setTimeout('hallo(j)',2000);
Flüchtigkeitsfehler! Du meinst natürlich:
Wechsel = setTimeout('hallo(' + j + ')', 2000);
Salokin
Ähm ja, und wieso meine ich das? Ich dachte, ich könnte die Variable einfach so übergeben, wieso muß ich die jetzt so reinschreiben?
Hi,
wieso muß ich die jetzt so reinschreiben?
Die Variable j ist nur innerhalb der Funktion hallo bekannt. Wenn nach Ablauf der 2000 Sekunden "hallo(j)" auf der Agenda steht, ist j unbekannt, also nicht definiert. Wenn die Anweisung dann aber "hallo(0)" oder "hallo(1)" lautet, gibt's kein Problem.
Theoretisch könntest Du auch eine globale Variable verwenden. Eine Aufrufvariable in einer Funktion ist aber in jedem Fall lokal (auf die Funktion beschränkt).
Salokin