eval-Methode

Variablenname mit Zahl durch eval-Methode zusammensetzen



Die eval-Methode
Es sollen die Monatsnamen gespeichert werden. Anhand der Nummer des Monats
soll auf den Monatsnamen zugegriffen werden. Der Variablenname setzt sich aus
dem Wort Monat und der Zahl zusammen. Die
Variablendeklaration sieht also folgendermaßen aus:
<SCRIPT LANGUAGE="JavaScript"><!--

var Monat1 =
"Januar"
var Monat2 = "Februar"

var Monat3 = "März"

var Monat4 =
"April"
var Monat5 =
"Mai"
var Monat6 =
"Juni"
var Monat7 =
"Juli"
var Monat8 =
"August"
var Monat9 =
"September"
var Monat10 =
"Oktober"
var Monat11 =
"November"
var Monatl2 =
"Dezember"
//--></SCRIPT>

Die Frage lautet nun: Wenn (beispielsweise in einer Variablen) die
Monatsnummer vorliegt, wie erhält man dann daraus den Monatsnamen
Natürlich
kann man eine Reihe von if-Anweisungen verwenden oder die switch-Anweisung, die
jedoch nur ab der Browser-Version 4 (Netscape Navigator bzw. Internet Explorer)
unterstützt wird. Schön wäre es jedoch, wenn man direkt den Variablennamen
verwendet.


Folgender Code funktioniert natürlich nicht wie beabsichtigt:

document.write("Monat"+monat)


In monat steht die Monatsnummer, aber obige
Zeile würde die Zeichenkette "Monat" konkateniert mit der Monatsnummer ausgeben,
also den Namen der Variablen, nicht die Variable selbst. JavaScript bietet eine
besondere Funktion, die es ermöglicht, Code auszuführen, der als Zeichenkette
vorliegt. Diese Funktion heißt eval. Als Parameter
wird eine Zeichenkette übergeben, und eval führt den JavaScript-Code aus, der in
der Zeichenkette steht. Der folgende Aufruf gibt den Wert der Variablen zurück,
nicht ihren Namen:
eval("Monat"+monat)
Will man also den Monatsnamen auf dem Bildschirm ausgeben, kann man folgende
Zeile verwenden:
document.write(eval("Monat"+monat))
Alternativ dazu kann der document.write-Befehl auch innerhalb der
eval-Klammern geschrieben werden:
eval("document.write(Monat"+monat+")")
Steht in der Variablen monat beispielsweise der Wert 12, so würde der
eval-Befehl nach dem Einsetzen der Variablen folgendermaßen aussehen:
eval("document.write(Monat12)")
Wenn in der Anweisung, die als Parameter an eval() übergeben wird,
Anführungszeichen vorkommen, müssen Sie die herkömmlichen Regeln beachten, also
entweder andere Anführungszeichen verwenden oder Anführungszeichen mit einem
Backslash entwerten. Oft ist es jedoch sinnvoll, den Aufruf von eval() möglichst
weit innen zu plazieren.
document.write("Der Monatsname lautet "+eval("Monat"+monat))