![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Hallo Leute, ich bin neu hier, vielleicht kann mir jemand bei meinem Problem helfen. Wenn es dazu schon etwas in eurer Dokumentation gibt (ich konnte leider nichts finden), wäre ich für einen Hinweis dankbar. Ich habe ein Array, das mit Bildern gefüllt wird (soweit kein Problem, Code s.u.). Wenn das letze Bild geladen worden ist, möchte ich eine Variable auf true setzen - soweit theoretisch auch kein Problem. Leider führt mein Internet Explorer bei bildArray[24].onload = fertig; die Funktion nicht aus. Versuche ich es mit bildArray[24].onload = fertig(); führt er die Funktion zwar aus, gibt aber direkt danach die Felermeldung "... nicht implementiert" aus - und das auch, wenn ich ihn mit window.onerrer=null; (ich weiss, ist unschön und eher Windows-Programmierung ;-) ) kalt stellen will. Also (*haarerauf*), was läuft hier falsch???? Kann mir jemand helfen? Schöne Grüße, Cosima -- Quellcode: var bildLoaded=false; var bildArray=new Array(25); for (var i00; i<25;i++){ |
|
bildArray[i]=new Image(); bildArray[i].src="images/bild" +i+ ".jpg"; } bildArray[24].onload = fertig; function fertig(){ bildLoaded=true; } |
#3
| |||
| |||
|
|
Leider führt mein Internet Explorer bei bildArray[24].onload = fertig; die Funktion nicht aus. |
#4
| |||
| |||
|
|
Nimm for (var i = 0; i < 25; i++) |
#5
| |||
| |||
|
|
Cosima Joergens wrote: Leider führt mein Internet Explorer bei bildArray[24].onload = fertig; die Funktion nicht aus. Das Bild ist vermutlich fertig geladen, bevor obige Anweisung zur Ausführung kommt, das heißt, Du "verpasst" das Load-Event. Versuche daher einmal dies: var bildLoaded = false; var bildArray = new Array(); for (var i=0; i<25; i++) { bildArray[i] = new Image(); if (i == 24) bildArray[i].onload = fertig; bildArray[i].src = "images/bild" + i + ".jpg"; } function fertig() { bildLoaded=true; } |
#6
| |||
| |||
|
|
Dietmar 'Ingrid' Meier wrote: Das Bild ist vermutlich fertig geladen, bevor obige Anweisung zur Ausführung kommt, das heißt, Du "verpasst" das Load-Event. Und noch was: die Bilder werden in aller Regel nicht in der festgelegten Reihenfolge mit dem Laden fertig sein. Willst Du die Variable erst dann auf true setzen, wenn alle Bilder da (oder fehlgeschlagen) sind, dann besser so: var allLoadedOrFailed = false, numLoadedOrFailed = 0, bildArray = new Array(), numToLoad = 25; for (var i=0; i<numToLoad; i++) { bildArray[i] = new Image(); bildArray[i].onload = zaehle; bildArray[i].onerror = zaehle; bildArray[i].src = "images/bild" + i + ".jpg"; } function zaehle() { if (++numLoadedOrFailed == numToLoad) { allLoadedOrFailed = true; // ein Funktionsaufruf wäre hier aber wohl hilfreicher // als das Setzen einer Variablen auf true ... } } ciao, dhgm |
#7
| |||
| |||
|
|
gutes Argument. Dummerweise bleibt mein Problem bestehen: if (i==24) bildArray[i].onload = fertig; führt zu gar nichts, |
|
if (i==24) bildArray[i].onload = fertig(); erzeugt beim IE besagte Fehlermeldung |
|
Dietmar Meier wrote: [folgt Fullquote] |
#8
| |||
| |||
|
|
var bildLoaded=false; var bildArray=new Array(25); for (var i00; i<25;i++){ bildArray[i]=new Image(); bildArray[i].src="images/bild" +i+ ".jpg"; } bildArray[24].onload = fertig; |
#9
| |||
| |||
|
|
J. Strübig wrote: bildArray[24].onload = fertig; mal 'ne Verständnisfrage: Feuert der onload hier, wenn das Bild-Array fertig erstellt ist, oder wenn das Bild über die Leitung gekommen ist? Ich halte es für gut möglich, dass der schon feuert, wenn bildarray[24] erstmal weiss, wo es das Bild holen soll (bildarray[i].src) |
![]() |
| Thread Tools | |
| Display Modes | |
| |