Fortschrittsbalken während einer Funktion updaten?
JavaScript Newbie
- javascript
0 Paul0 Struppi
Hallo!
Ich habe da mal eine Frage zu JavaScript:
Ich rufe eine Funktion auf, die wiederum mehrere "Unterfunktionen" aufruft.
Jetzt möchte ich nach jeder "Unterfunktion" einen Fortschrittsbalken aktualisieren. Das geht aber nicht.
Die Webseite wird immer erst nach ablauf der gesamten Funktion aktualisiert. Ich sehe also erst Fortschrittsbalken 0%, dann werden alle "Unterfunktionen" ausgeführt, dann sehe ich 100%. Die Zwischenschritte werden nicht angezeigt, es wird einfach die Anzeige nicht aktualisiert.
Script sieht etwa so aus:
funtion GetMW()
{
GetMetWS(0);
SetProgress("Progress", 0);
GetMetWS(1);
SetProgress("Progress", 25);
GetFet(0);
SetProgress("Progress", 50);
GetFet(1);
SetProgress("Progress", 100);
}
Die Funktion SetProgress erzeugt einen Fortschrittsbalken indem sie über das DOM eine kleine Tabellenzelle in der Breite verändert.
Wenn ich zwischen den Funktionen ein window.alert aufrufe, dann wird jedesmal die Seite aktualisiert dargestellt.
Wie kann ich während die Funktion GetMW() läuft, die Anzeige aktualisieren?
Ein location.reload ist nicht möglich, da dann die gesamte Seite neu geladen wird und andere Änderungen an der Seite (Auswahlfenster) verloren gehen.
Wäre schön, wenn mir jemand helfen könnte!
Danke im Vorraus
Gruß
Jan
Moin Jan.
Evtl. mit innerHTML?
Paul
Moin Jan.
Evtl. mit innerHTML?
Paul
Mach ich ja, aber die Ansicht wird erst nach Ablauf der Funktion aktualisiert. Nicht während. :-(
"Struppi" hat schon geschrieben warum.
Gruß!
Die Webseite wird immer erst nach ablauf der gesamten Funktion aktualisiert. Ich sehe also erst Fortschrittsbalken 0%, dann werden alle "Unterfunktionen" ausgeführt, dann sehe ich 100%. Die Zwischenschritte werden nicht angezeigt, es wird einfach die Anzeige nicht aktualisiert.
JS hat einen Mechanismus eingebaut, der bewirkt, dass die Anzeige erst nach Beendigung des skriptes aktualisiert wird.
Wie kann ich während die Funktion GetMW() läuft, die Anzeige aktualisieren?
Indem du die einzelenen schritte mittels Timeout aufrufst.
Struppi.
...
JS hat einen Mechanismus eingebaut, der bewirkt, dass die Anzeige erst nach Beendigung des skriptes aktualisiert wird.
...
Indem du die einzelenen schritte mittels Timeout aufrufst.Struppi.
Ich habs befürchtet!!
Schade. :-(
Danke für die Antwort!
Hallo,
Ich habs befürchtet!!
Schade. :-(
warum? Geht doch ganz einfach: http://forum.de.selfhtml.org/archiv/2007/4/t151078/#m982797.
Gruß, Jürgen
Hallo,
Ich habs befürchtet!!
Schade. :-(warum? Geht doch ganz einfach: http://forum.de.selfhtml.org/archiv/2007/4/t151078/#m982797.
oh, das finde ich aber unschön.
Du verwendest hier globale Variabeln, da in dem Beispiel this gleich window ist (this sollte man immer nur im Zusammenhang mit Objekten verwenden). Das würde ich anders machen.
function zaehler() {
var thisObject = new function() {};
thisObject.start = function() {
this.o = document.getElementById("out").firstChild;
this.i = 100;
this.loop();
}
thisObject.loop = function() {
this.i--;
this.o.data = this.i;
var self = this;
if(this.i) window.setTimeout(function() { self.loop();},100);
else this.finish();
}
thisObject.finish=function() {
alert("Fertig");
}
thisObject.start();
}
Struppi.
Hallo Struppi,
Du verwendest hier globale Variabeln, da in dem Beispiel this gleich window ist (this sollte man immer nur im Zusammenhang mit Objekten verwenden). Das würde ich anders machen.
das muss ich mir mal in Ruhe ansehen. Auf die Schnelle sehe ich nicht, was da wirklich anders ist. Bisher dachte ich, das sich "this" in Funktionen auf die Funktion bezieht. Ich habe wohl den Unterschied zwischen "function" und "new function" noch nicht verstanden.
Gruß, Jürgen
Bisher dachte ich, das sich "this" in Funktionen auf die Funktion bezieht. Ich habe wohl den Unterschied zwischen "function" und "new function" noch nicht verstanden.
Ja scheint so.
this ist immer der Kontext des Aufrufes einer Funktion und der ist normalerweise immer window. Bei Eventfunktionen ist es das Objekt das den Event auslöst und bei mit new erzeugten Objekten ist es das Objekt selbst. Und da du nirgends new benuzt ist es bei dir window.
Struppi.
Hallo Struppi,
... bei mit new erzeugten Objekten ist es das Objekt selbst. ...
das ist neu für mich. Aber ich lerne gerne dazu. Danke für die Nachhilfe.
Gruß, Jürgen
Hallo,
Ich habs befürchtet!!
Schade. :-(warum? Geht doch ganz einfach: http://forum.de.selfhtml.org/archiv/2007/4/t151078/#m982797.
Gruß, Jürgen
Ja, habs auch schon implementiert, aber anders wäre es einfach irgendwie "schöner" gewesen! ;-)
Gruß
Jan