Der Martin: Image.onLoad zu früh ausgeführt?

Beitrag lesen

Hi,

Ich will auf meiner Seite einige Bilder laden und da die Seite ohne den Bildern sinnlos wäre lege ich anfangs eine div Box über den ganzen Schirm als "Ladebildschirm".

es heißt "ohne die Bilder". Im Deutschen wird "ohne" mit Akkusativ benutzt - im Gegensatz zu "mit", das verlangt den Dativ. Nicht logisch, ist aber so.

Nun wollte ich wenn das letzte Bild geladen ist, per onLoad die div Box ausblenden.
Nur leider wird sie nicht am Ende sondern gleich zu Beginn ausgeblendet, an was könnte das liegen?

Du hast hier gleich mehrere Böcke geschossen.

function preload()
{
  for (i = 0; i < BildListe.length; i++)
  {
    Bilder[i] = new Image();

if (i == (BildListe.length-1))

Wenn das letzte Bild in der Liste bearbeitet wird ...

Bilder[i].onLoad = makeVisible();

... rufe die Funktion makeVisible() auf und weise ihren Rückgabewert der Phantasieeigenschaft onLoad zu.

* Denkfehler #1:
   Es gibt keine Eigenschaft onLoad, bevor du eine erzeugst. Vermutlich meinst du onload.
 * Denkfehler #2:
   Du gibst nur dem letzten Bild in der Liste einen onload-Handler, weißt aber gar nicht, in
   welcher Reihenfolge der Browser die Bilder wirklich lädt.
 * Denkfehler #3:
   Du rufst die Eventhandler-Funktion makeVisible() sofort auf, anstatt die Funktionsreferenz dem
   Eventhandler zuzuweisen.

document.getElementById('loaddiv').style.display='none';

Die Backslashes vor den Anführungszeichen dürften einen Javascript-Syntaxfehler schmeißen.

So long,
 Martin

--
Der Gast geht solange zum Tresen, bis er bricht.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(