Image-Feld Arrays basteln

Hallo zusammen!

Hier ein kleines JavaScript-Programm:

function set_field(fieldname){
alert(fieldname);
///////// H I E R W I R D E S I N T E R E S S A N T /////////////
window.document.playground.fieldname.src=‚test1.jpg‘;
}

Sobald ich auf das Bild klicke wird die JavaScript-Funktion set_field aufgerufen. Diese gibt dann zuerst den Namen des Image-Feldes in einer Messagebox aus (hier „field“). Danach soll das Bild test0.jpg durch test1.jpg ersetzt werden.
Nun zu meiner Frage: Wenn ich window.document.playground.field.src=‚test1.jpg‘ schreibe macht das Programm genau das was ich will. Dies soll aber ein Workaround werden, da man unter HTML den Image-Feldern keinen Index mitgeben kann, also zum Beispiel das Feld nachher wie folgt anzusprechen: window.document.playgroung.field[0].src=‚test1.jpg‘
Sinn und Zweck der Übung ist es die Möglichkeit zu bekommen eine beliebige endliche Anzahl gleichartiger Image-Felder per Index mit einem JavaScript anzusprechen. Darum ist meine Idee folgende gewesen: Ich übergebe der Funktion den Namen des Image-Feldes und setze dies nachher wieder ein (so ähnlich wie &variablenname unter C). Leider habe ich es nicht zum Laufen bekommen.
Hat jemand eine Idee wie ich mit JavaScript ein „Array“ von Image-Feldern mit JavaScript ansprechen kann? Vorstellen kann ich es mir direkt durch eine verborgene Index-Eigenschaft oder dann eben mit einem Workarround wie von mir vorgeschlagen den Namen in der Funktion weiter zu verarbeiten.

Grüße
C. Penkwitt

Hallo Christian,

ich hab zwar nicht genau verstanden was du vorhast, aber:

document.getElementsByTagName(„img“)

gibt dir ein Array aller img Tags im Document. Mit

document.getElementsByTagName(„p“)[1]

kannst du dann ein bestimmtes, hier das zweite, ansprechen.

Kannst du mir das Ziel der Übung noch einmal erläutern?

mfg

Dirk.Pegasus

Hallo,

function set_field(fieldname){
alert(fieldname);
window.document.playground.fieldname.src=‚test1.jpg‘;
}

das kann schon mal gar nicht funktionieren, weil window.document.playground eine Bezeichnung für ein Objekt ist, fieldname aber eine Variable.
Wenn du z.B. die Variable document definiert hättest, und dann auf window.document zugreifen würdest, woher sollte der Interpreter wissen, welches document gemeint ist?

In Skriptsprachen kann man, sofern es keine bessere Lösung gibt, so etwas mit eval() lösen:
eval(„window.document.playground.“ + fieldname + „.src=…“);

Aber das ist keine elegante Möglichkeit, eine bessere wurde ja von meinem Vor"red"ner genannt.

Grüße,
Moritz

verstehe ich nicht
Hallo!

Nun zu meiner Frage: Wenn ich
window.document.playground.field.src=‚test1.jpg‘ schreibe
macht das Programm genau das was ich will. Dies soll aber ein
Workaround werden, da man unter HTML den Image-Feldern keinen
Index mitgeben kann, also zum Beispiel das Feld nachher wie
folgt anzusprechen:
window.document.playgroung.field[0].src=‚test1.jpg‘

Wieso sprichst Du es dann nicht mit

**window.document.playground["field[0]"].src = "test1.jpg";**

an?

Des Weiteren könntest Du alle relevanten Bilder mit dem gleichen Namen versehen, also

...

dann hast Du in window.document ein Array BildA und ein Array BildB, welches Du dann der Reihenfolge nach ansprechen kannst, bspw.

Indexed Images\<!--
 function f\_swapImageSource( objObject ) {
 var nImgArrLength = document[objObject.name].length;
 for ( var nCounter = 0; nCounter \< nImgArrLength; nCounter++ )
 document[objObject.name][nCounter].src = "test1.jpg";
 return;
 } // f\_swapImageSource();
//--\>

Gruß
Christian