Image-Objekte in Arrays speichern nicht möglich?
Yadgar
- javascript
High!
Inzwischen habe ich es zumindest prinzipiell geschafft, die onMouseOver/onClick-Grafiken richtig einzubinden, wundere mich aber über folgendes:
Dieser Code hier:
over0 = new Image();
over1 = new Image();
click0 = new Image();
click1 = new Image();
out0 = new Image();
out1 = new Image();
over0.src = "n0over.gif";
over1.src = "n1over.gif";
click0.src = "n0click.gif";
click1.src = "n1click.gif";
out0.src = "n0.gif";
out1.src ="n1.gif"
im2[0].onmouseover = function (evt) {this.src = over0.src};
im2[1].onmouseover = function (evt) {this.src = over1.src};
im2[0].onclick = function (evt) { this.src = click0.src };
im2[1].onclick = function (evt) { this.src = click1.src };
im2[0].onmouseout = function (evt) { this.src = out0.src };
im2[1].onmouseout = function (evt) { this.src = out1.src };
funktioniert einwandfrei, während sich bei:
over = new Array(2);
click = new Array(2);
out = new Array(2);
i = 0;
while (i < 2)
{
over[i] = new Image();
click[i] = new Image();
out[i] = new Image();
over[i].src = "n" + i + "over.gif";
click[i].src = "n" + i + "click.gif";
out[i].src = "n" + i + ".gif";
im2[i].onmouseover = function (evt) {this.src = over[i].src};
im2[i].onclick = function (evt) { this.src = click[i].src };
im2[i].onmouseout = function (evt) { this.src = out[i].src };
i++;
}
gar nichts tut... seltsamerweie bekomme ich aber die Fehlermeldung "...has no properties" nur für over[i] und out[i], nicht aber für click[i] angezeigt! Dabei sehe ich weder einen Unterschied in der Deklaration der drei Arrays untereinander, noch kann ich nachvollziehen, wieso ausgerechnet Image()-Objekte nicht in Arrays speicherbar sein sollten...
Bis bald im Khyberspace!
Yadgar
Lieber Yadgar,
over = new Array(2);
click = new Array(2);
out = new Array(2);
wie wäre es denn mit nur einem Array?
var meine_bilder = new Array();
/* im2 brauchen wir damit dann auch nimmer */
var i = 0;
while (i < 2)
{
/* im2[i] = new Image(); // Ist im2[i] schon ein image-Objekt? */
meine_bilder[i]['im2'] = new Image();
meine_bilder[i]['over'] = new Image();
meine_bilder[i]['click'] = new Image();
meine_bilder[i]['out'] = new Image();
meine_bilder[i]['im2'].src = ""; // hier kommt der default-Wert rein...
meine_bilder[i]['over'].src = "n" + i + "over.gif";
meine_bilder[i]['click'].src = "n" + i + "click.gif";
meine_bilder[i]['out'].src = "n" + i + ".gif";
meine_bilder[i]['im2'].onmouseover = function (evt) {this.src = meine_bilder[i]['over'].src};
meine_bilder[i]['im2'].onclick = function (evt) { this.src = meine_bilder[i]['click'].src };
meine_bilder[i]['im2'].onmouseout = function (evt) { this.src = meine_bilder[i]['out'].src };
i++;
}
Das ist sicherlich auch nicht schwerer handzuhaben (eher sogar leichter)!
Liebe Grüße aus Ellwangen,
Felix Riesterer.