Lars Regensburger: Images vorladen

Hi,
Ich habe ein Problem mit diesem Script:
if(document.images){
 var var_image_geladen;
 var var_image_laden;
 var_image_geladen = "0";
 var_image_laden = "0";
 arr_image = new Array();
 arr_image[0] = new Image();
 arr_image[0].src = "bar.gif";
 arr_image[1] = new Image();
 arr_image[1].src = "bar.gif";
 arr_image[2] = new Image();
 arr_image[2].src = "bar.gif";
 arr_image[3] = new Image();
 arr_image[3].src = "bar.gif";
 arr_image[4] = new Image();
 window.setTimeout("arr_image[4].src = "bar.gif";", 600)
 for (var i=0; i < arr_image.length; ++i)
  if(arr_image[i].complete)
  var_image_geladen ++;
 for (var i=0; i < arr_image.length; ++i)
  var_image_laden ++;
 >document.write(var_image_geladen +" von "+ var_image_laden +" Grafiken geladen.");
 if(var_image_laden == var_image_geladen)
  >document.location.href = "seite2.htm";
}

Wie bekomme ich die zwei mit > gekennzeichnete Codezeile dynamisch?
So wie es jetzt ist, springt die Anzeige nicht auf 5 um, wenn die grafik geladen wurde.
MfG, Lars

  1. hio,

    ich versuch mal grob den Quelltext mal ein wenig durchzugehen

    // prüfen ob browser mit images umgehen kann
    if(document.images){

    // das war doppeltgemoppelt deswegen mal ungeschrieben
     // ausserdem wolltest du ja die Zahl 0 speichern und nicht das Zeichen 0
     var_image_geladen = 0;
     var_image_laden = 0;
    // image-Array anlegen und 4 images eintragen+laden lassen
     arr_image = new Array();
     arr_image[0] = new Image();
     arr_image[0].src = "bar.gif";
     arr_image[1] = new Image();
     arr_image[1].src = "bar.gif";
     arr_image[2] = new Image();
     arr_image[2].src = "bar.gif";
     arr_image[3] = new Image();
     arr_image[3].src = "bar.gif";
     arr_image[4] = new Image();
    // hm, muss ich net ganz verstehen, oder? die lädst immer das gleiche bild ?
    // und dann wartest du etwas mehr wie ne halbe sekunde und ersetzt das 5 bild mit dem selben bild?
     window.setTimeout("arr_image[4].src = "bar.gif";", 600)

    // hier wirds interessanter
    // du machst eine Schleife, mit 0 bis 4, (oder versuchst es ^^)
    // müsste das nicht i++ heissen?
     for (var i=0; i < arr_image.length; ++i)
      // prüfst ob das bild fertig ist, aber wieso sollte es schon fertig sein?, du hast bei ner halbwegs brauchbaren cpu ein paar nanosekunden zuvor angefangen das ding laden zu lassen
    // also dürfte die Bedingung so nicht erfüllt sein, und deine Variable wird nicht hochgezählt
      if(arr_image[i].complete)
      var_image_geladen ++;

    // nächste Schleife
    // same hier i++
     for (var i=0; i < arr_image.length; ++i)

    // du zählst immer 1 dazu
      var_image_laden ++;

    >document.write(var_image_geladen +" von "+ var_image_laden +" Grafiken geladen.");
    // hier prüfst du ob 0 = 5 ist, isses nicht also keine umleitung
     if(var_image_laden == var_image_geladen)
      >document.location.href = "seite2.htm";
    }

    imho gehst du hier etwas den falschen Ansatz, wobei ich eingestehe muss nicht ganz 100% zu wissen was du machst. Besser würdest du fahren bei den Grafiken mit dem Eventhandler onload (bzw. onerror) zu arbeiten um herauszufinden wann die Grafik geladen wurde.

    gruss

    Thorsten