Hallo Homer
function konstant(x)
{
alert(x);
setTimeout('konstant(x)',10);
}
Wie kann ich hier den Parameter beibehalten???
Die Funktion wird über onload="konstant(1)" aufgerufen.
Wenn setTimeout die Funktion zum 2x aufruft, ist 'x' undefinded.
Das ist auch richtig so. Der Parameter lebt nur solange wie der Funktionsaufuf dauert. Die Methode setTimeout() erzeugt eine Verzögerung des Aufrufes und wird erst wirksam, wenn die Funktion bereits abgearbeitet ist. Wenn dann der Aufruf abgearbeitet wird, existiert x natürlich schon längst nicht mehr, daher die Fehlermeldung.
Abhilfe kannst du durch eine Stringaddition schaffen:
setTimeout('konstant('+x+')',10)
wenn in x 1 gespeichert ist entsteht daraus der Aufruf:
setTimeout('konstant(1)',10);
Aufpassen muß man, wenn x einen String enthält, hier müssen die Begrenzerzeichen mit angegeben werden, da diese nicht von allein gesetzt werden:
z.B. x="abc";
setTimeout('konstant("'+x+'")',10)
erzeugt
setTimeout('konstant("abc")',10);
Fehlen die Begrenzerzeichen erfolgt sonst eine Fehlermeldung.
Viele Grüße
Antje