topas: Frage zu Funktion mit arguments

Beitrag lesen

Hallo David,

Ich würde gerne in der Funktion Satzteil auf die variable x aus der Funktion farbe zugreifen. Sobald ich jedoch die zweite Funktion aufrufe, wird mir bei der Ausführung des Codesalert(farbe.arguments[0]); der JS-Fehler angezeigt, dass farbe.arguments[0] Null oder kein Objekt ist. Dabei ist die Variable eindeutig gefüllt...

wie meine Vorredner schon gesagt haben, ist beim Aufruf der Funktion satzteil() die Funktion farbe() bereits abgelaufen. Damit ist ein Zugriff auf die Parameter nicht mehr möglich.

Allerdings ist in JavaScript jede Funktion gleichzeitig ein Objekt und diesem Objekt können Eigenschaften zugeordnet werden. Auf diese Art und Weise kann auf sehr einfacher Art und Weise der Wert eines Parameters zwischengespeichert werden.

Beispiel:

<html>
<head>
<title>Testseite</title>

</head>
<body><pre><script type="text/javascript">
<!--
function farbe(param) {
farbe.param = param;
document.writeln("farbe aufgerufen: " + param  );
}

function satzteil() {
if (!satzteil.i) {
     satzteil.i = 1;
} else {
     satzteil.i++;
}

return (satzteil.i + ". Aufruf satzteil ruft farbe: " + farbe.param);
}

farbe(3);
document.writeln(satzteil());
farbe(4)
document.writeln(satzteil());
farbe(5)
setTimeout("alert(satzteil())",200);

//-->
</script></pre></body>
</html>

Viele Grüße

tp