HighDots Forums  

Event-Handler

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Event-Handler in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Cosima Joergens
 
Posts: n/a

Default Event-Handler - 08-14-2003 , 08:26 AM






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;
}


Reply With Quote
  #2  
Old   
Martin Honnen
 
Posts: n/a

Default Re: Event-Handler - 08-14-2003 , 09:34 AM








Cosima Joergens wrote:
Quote:
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++){
Nimm
for (var i = 0; i < 25; i++)

Quote:
bildArray[i]=new Image();
bildArray[i].src="images/bild" +i+ ".jpg";
}
bildArray[24].onload = fertig;
function fertig(){
bildLoaded=true;
}


--

Martin Honnen
http://JavaScript.FAQTs.com/



Reply With Quote
  #3  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: Event-Handler - 08-14-2003 , 10:22 AM



Cosima Joergens wrote:

Quote:
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;
}

ciao, dhgm



Reply With Quote
  #4  
Old   
Cosima Joergens
 
Posts: n/a

Default Re: Event-Handler - 08-14-2003 , 01:30 PM



Hallo,

ist klar, das war ein Tippfehler in der Mail. ;-) Daran liegt's nicht.

LG,
Cosima


Martin Honnen wrote:


Quote:
Nimm
for (var i = 0; i < 25; i++)


Reply With Quote
  #5  
Old   
Cosima Joergens
 
Posts: n/a

Default Re: Event-Handler - 08-14-2003 , 09:28 PM



Hi,

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
(zwischenzeitlich auf einem weiteren Rechner mit gleichem Ergebnis
getestet).

LG,
Cosima


Dietmar Meier wrote:

Quote:
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;
}



Reply With Quote
  #6  
Old   
Cosima Joergens
 
Posts: n/a

Default Re: Event-Handler - 08-14-2003 , 09:32 PM



Hi,

gute Idee! Werde ich machen, sobald ich mein Problem in den Griff
gekriegt habe (besteht leider immer noch :-().

LG,
Cosima


Dietmar Meier wrote:

Quote:
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




Reply With Quote
  #7  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: Event-Handler - 08-15-2003 , 06:11 AM



Cosima Joergens wrote:

Quote:
gutes Argument. Dummerweise bleibt mein Problem bestehen: if (i==24)
bildArray[i].onload = fertig; führt zu gar nichts,
Stelle das doch mal zum Ansehen online und poste einen URL, ich habe
nämlich keine Lust, zu Testzwecken ein Verzeichnis mit $ANZAHL
numerierter Bilder zu erstellen.

Quote:
if (i==24)
bildArray[i].onload = fertig(); erzeugt beim IE besagte Fehlermeldung
Natürlich, das ist ja auch gar nicht, was Du willst (Hint: hier wird
nicht dem onload-Handler eine Funktionsreferenz zugewiesen, sondern die
Rückgabe aus dem sofortigen Aufruf der Funktion "fertig()").

Quote:
Dietmar Meier wrote: [folgt Fullquote]
Vermeide TOFU! Bitte lies vor dem nächsten Posting dringend einmal:
http://www.volker-gringmuth.de/usenet/zitier.htm

ciao, dhgm



Reply With Quote
  #8  
Old   
J. Strübig
 
Posts: n/a

Default Re: Event-Handler - 08-15-2003 , 06:32 AM



Cosima Joergens wrote:

Quote:
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;
Du musst den onload event VOR dem laden des Bildes zuweisen. Allerdings
muss die Reihenfolge nicht unbedingt die Ladereihenfolge sein, insofern
ist diese herangehensweise falsch.

Struppi.


Reply With Quote
  #9  
Old   
Steffen Laubner
 
Posts: n/a

Default Re: Event-Handler - 08-16-2003 , 05:32 AM



Ulrike Jahnke-Soltau schrieb:

Quote:
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)
Nein. "onload" feuert, wenn alle Pixel des Bildes im Speicher sind.

--
http://www.geocities.com/SoHo/Bistro/9813/ - Photogallery (JavaScript)
http://www.fotocommunity.de/pc/pc.php4?mypics=1631 - more Photos


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.