Calocybe: Nachhilfe beim Imageobjekt

Beitrag lesen

Hallo Joachim!

Kein Wunder, im ersten Fall legst Du ein Array von Images an. Jedes Element wird mit kopfbild[i] angesprochen. In der Zuweisung der .src-Eigenschaft machst Du das ja auch ganz richtig:

kopfbild=new Array();
for (i =1;i<=10;i++)

»»  {

kopfbild[i] = new Image();
   kopfbild[i].src = "kopf" + i + ".jpg";

»»  }

Bei

kopfbild1 = new Image();
kopfbild1.src = "kopf1.jpg";
usw. bis 10

dagegen hast Du 10 verschiedene, voellig voneinander unabhaengige Variablen, die zufaellig sehr aehnliche Namen haben.

Mit

function wechsel1(a1, a2) {

»»    document.images[a1].src=a2.src;

}
a1 = 0 (erstes Bild) a2 = kopfbild3   <-- Du meinst, Du rufst wechsel(0, kopfbild3); auf?

sprichst Du die .src-Eigenschaft des uebergebenen Parameters as an, welcher ein Kopie von kopfbild3 ist. (Ich meine, a2 ist eine Kopie der Variable (genauer: Objektinstanz) kopfbild3, was nicht gerade sehr sauber ist. Besser waere, nur die .src-Eigenschaft zu uebergeben, also
function wechsel1(a1, a2s) { document.images[a1].src=a2s; }     und mit
wechsel(0, kopfbild3.src);  aufrufen.)

Wenn Du dieselbe Funktion mit dem Array verwenden willst, muesstest Du einfach
wechsel(0, kopfbild[3]);  aufrufen. Aber ist wie gesagt nicht so toll, ein ganzes Image-Objekt als Argument an eine Funktion zu uebergeben.

Wenn ich die wechsel-Funktion in Verbindung mit dem Array so schreibe:

function wechsel1(a1,a2) {

»»    document.images[a1].src="kopf"+a2+".jpg";

}

Dann musst Du aber nur  wechsel(0, 3); aufrufen, wenn das funktionieren soll.

Am besten ist auf jeden Fall eine Funktion, der nur die Bildnummer uebergeben werden muss. Fuer das Array waere das
function wechsel(a1, a2) {
    document.images[a1].src = kopfbild[a2].src;  // siehste, doc.images ist auch nur so ein Bilderarray
}
Fuer die einzelnen Variablen:
function wechsel(a1, a2) {
    document.images[a1].src = eval("kopfbild" + a2 + ".src");  // bin mir nicht ganz sicher
}

Oder die von Dir gewaehlte Version mit der direkten URL-Angabe. Aufruf ist in jedem Fall
wechsel(0, 3); .

Bye by Calocybe