Carl: Problem mit Image-Objekt im IE

Hallo,

ich habe folgendes Script erstellt, das im Safari und Firefox wunderbar funktioniert nur leider im IE6 (IE 7 noch nicht getestet) nicht...

Es funktioniert wie folgt: Er geht alle mittels PHP gefundenen Dateien durch und ersetzt vorgefertige Container mit dem geladenen Bild. Allerdings steigt er im IE direkt NACH dem ersten Bild aus und sagt dazu in der Fehler-Konsole nur "nicht implementiert", was mir nicht wirklich weiterhilft. Habt Ihr eine Idee, woran es liegen könnte?

Viele Danke und viele Grüße
Phil

--------------------------------------------------

var myPicture;

function loadImage() {

for (i = 1; i <= <?=$fileCount?>; ++i) {

myPicture = new Image();
  myPicture.src = "<?=$path?>" +i+".jpg";
  myPicture.onload = changePicture(i);
  delete myPicture;

}

}

function changePicture(index) {

document.getElementById("picture_"+index).src = myPicture.src;

if (index == <?=$fileCount?>) Effect.Fade('loading', { "duration" : 0.9 } );

}

loadImage();

  1. hi,

    myPicture.onload = changePicture(i);

    Hier weisst du den _Rückgabewert_ der Funktion, die du zu diesem Zeitpunkt bereits aufrufst, dem onload-Attribut des Bildobjektes zu.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. myPicture.onload = changePicture(i);

      Hier weisst du den _Rückgabewert_ der Funktion, die du zu diesem Zeitpunkt bereits aufrufst, dem onload-Attribut des Bildobjektes zu.

      Hey, danke für die schnelle Antwort. Allerdings sollte das so korrekt sein, da er nach dem er das Bild geladen hat, die Funktion changePicture aufruft. Firefox macht das ohne Probleme und gibt auch keine Fehlermeldung. Auch der IE macht es beim ersten mal, nur danach nicht. Wie sollte es sonst heissen?

      Viele Grüße
      Philipp Carl

  2. Hi,

    Es funktioniert wie folgt: Er geht alle mittels PHP gefundenen Dateien durch und ersetzt vorgefertige Container mit dem geladenen Bild.

    da du hier einen Teil deiner Programmlogik in PHP und einen anderen Teil in Javascript realisierst, sollstest du die beiden Teile zum Debugging strikt trennen. Poste also bitte, wenn du den JS-Teil diskutieren möchtest, nur den JS-Code, der keine PHP-Blöcke mehr hat.

    for (i = 1; i <= <?=$fileCount?>; ++i) {

    myPicture = new Image();
      myPicture.src = "<?=$path?>" +i+".jpg";
      myPicture.onload = changePicture(i);
      delete myPicture;

    }

    Der Sinn dieser Schleife will sich mir nicht erschließen. Du läufst hier quasi n-mal durch, erzeugst in jedem Durchlauf ein Image-Objekt, bestückst es mit bestimmten Eigenschaften, und wirfst es sofort wieder weg. Was hat das für einen Zweck?

    function changePicture(index) {
    document.getElementById("picture_"+index).src = myPicture.src;

    Das kann nicht funktionieren: Bevor loadImage() einmal durchgelaufen ist, ist myPicture nicht initialisiert, danach ungültig - es wurde ja nach jedem Schleifendurchlauf wieder "deleted". Also egal, wann diese Anweisung ausgeführt wird, "myPicture has no properties".

    Ich glaube, du hast noch einen schweren Denkfehler in deinem Konzept.

    So long,
     Martin

    --
    Bitte komme jemand mit einem *g* zum Wochenende, damit nicht über mich gelacht wird.
      (Gunnar Bittersmann)