JavaScript Newbie: Fortschrittsbalken während einer Funktion updaten?

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

  1. Moin Jan.

    Evtl. mit innerHTML?

    Paul

    1. 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ß!

  2. 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.

    --
    Javascript ist toll (Perl auch!)
    1. ...

      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!

      1. Hallo,

        Ich habs befürchtet!!
        Schade. :-(

        warum? Geht doch ganz einfach: http://forum.de.selfhtml.org/archiv/2007/4/t151078/#m982797.

        Gruß, Jürgen

        1. 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.

          --
          Javascript ist toll (Perl auch!)
          1. 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

            1. 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.

              --
              Javascript ist toll (Perl auch!)
              1. 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

        2. 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