Christine Kuehnel: JS Frage ....

Beitrag lesen

Hallo Ihr zwei,

Es ist mal wieder so weit. Ich verstehe die (JS) welt nicht mehr !
document[name].src=eval(name+".src");
Also wenn ich die Zeile betrachte, geht es mir genau wie Dir <g>.

Soll ich mal probieren, Eure Welten wieder in Ordnung zu bringen? <g>

eval() ist eine Funktion, die Zeichenketten zu "bewerten" versucht, und zwar im Sinne einer Rechenoperation.

Das ist nur die halbe Wahrheit.
eval() wandelt naemlich kontextabhaengig um.
Ihr wisst schon, ich mach's mir immer einfach, schreibe Passagen aus der Doku ab.
Netscape sagt darin naemlich:
  "The eval method evaluates a string of JavaScript code in
    the context of the specified object."
(Bei MS steht mit Sicherheit irgendwo was Analoges)

document[name].src=name+".src";

Und damit kann diese Anweisung Berechtigung und Sinn haben.
Ich habe natuerlich den Gesamtzusammenhang jetzt nicht, leite den mal aus der einen Zeile ab.
Hier gibt es augenscheinlich Image-Objekte (vermutlich mit new Image() deklariert, ist aber nicht so entscheidend).

Zuerst mal zum Verdeutlichen, das, was wir alle kennen, sieht so aus:
              ein_Bild = new Image();
              ein_Bild.src = 'blabla.gif';
              document['Bild'].src = ein_Bild.src;
         document['Bild'] ist hier ein Objekt mit Eigenschaft src.
         ein_Bild ist auch ein Objekt, auch mit Eigenschaft src.
         Die Zuweisung erfolgt also zwischen Objekten.

Zurueck zu der mysterioesen Anweisung:
document[name] ist ebenfalls ein Image-Objekt, name dabei ein String (waere 'Bild' aus obigen Bsp.)
Dessen src-Eigenschaft soll wie in meinem kleinen Bsp. der src-Eigenschaft eines anderen Objektes gleichgesetzt werden. Das Objekt heisst nun wohl gerade name.
Die Variable name ist String, sahen wir gerade. Gesucht wird aber nicht die src-Eigenschaft von dieser String-Variablen (hat gar keine <g>), sondern die des Image-Objektes mit Namen name.
Also muss man ein Objekt "machen". Sowas tut eval().
Wenn in name "Bildchen" steht, dann macht in diesem Kontext
eval(name + ".src") daraus Bildchen.src (Objekt mit Eigenschaft src)

Bisschen verwirrend an der Zeile, um die es ging, das doppelte Auftauchen von name.
Ich vermute mal, dass ist im grossen Zusammenhang des Scripts, was wir hier nicht sehen, programmtechnisch einfach geschickt geloest, mit einem String auszukommen, um  
verschiedene Image-Objekte ansprechen zu koennen.

War das jetzt sehr graue Theorie? Ich hoffe nicht.

Christine