Yadgar: Image-Objekte in Arrays speichern nicht möglich?

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

  1. 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.