Nachhilfe beim Imageobjekt
Joachim
- javascript
hallo,
koennt Ihr mir etwas Nachhilfe beim Imageobjekt geben?
Also, wenn ich Bilder wie folgt vorlade:
kopfbild=new Array();
for (i =1;i<=10;i++)
{
kopfbild[i] = new Image();
kopfbild[i].src = "kopf" + i + ".jpg";
}
Um anschliessend die Bilder zu wechseln funktioniert_das_nicht (NC 4.5):
function wechsel1(a1,a2)
{
document.images[a1].src=a2.src;
}
a1 = 0 (erstes Bild) a2 = kopfbild3
lade ich die Bilder wie folgt vor:
kopfbild1 = new Image();
kopfbild1.src = "kopf1.jpg";
kopfbild2 = new Image();
kopfbild2.src = "kopf2.jpg";
kopfbild3 = new Image();
kopfbild3.src = "kopf3.jpg";
usw. bis 10
funktioniert es. Erzeugt denn das Array keine Image-Objekte?
Wenn ich die wechsel-Funktion in Verbindung mit dem Array so schreibe:
function wechsel1(a1,a2)
{
document.images[a1].src="kopf"+a2+".jpg";
}
also die Bild-URL eisetze, funktioniert es.
Ich begreife es nicht ganz, waere nett, wenn‚s mir mal jemand erklaeren kann.
Gruss Joachim
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
Hallo Calocybe,
hast Dir auf jeden Fall mal wieder ein Bier verdient, ich glaube, ich habe es kapiert :-)
Mit den Sprachelementen gehe ich halt bisweilen noch sehr amateurhaft-gschlampert um...
Oder die von Dir gewaehlte Version mit der direkten URL-Angabe. Aufruf ist in jedem Fall
wechsel(0, 3)
Klar, hatte ich auch (nur nicht im posting)
Also, gute Nacht und guten Morgen und Gruss Joachim