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