S.Samir: Für JScript Kenner: Probleme mit Aktualisierung der HTML Seite

Beitrag lesen

Es gibt eine merkwürdige Erscheinung in MSIE 6, die mir große Probleme macht:
Der Code dazu:

<html>
   <head></head>
   <body>
      <form id="formular">
         <p onclick="fuelle();"><u>hier klicken, um die Zahlen von 1 bis 10 anzuzeigen</u></p>
Schon mal vom a-Element gehört?

<p><input id="formname" type="text" size="6" maxlength="6"></p>
      </form>
   </body>

<script>
      function fuelle() {
         for (u=0;u<=10;u++) {
            wert = "Nr " + u
            document.forms.formular.formname.value=wert

// nun ein bisschen warten:
            for (v=0;v<=60000;v++) var uz=" "+v
         }
      }
   </script>
</html>

Ich erwarte, daß ich im Formularfeld die Ausgabe "Nr 0" sehe, anschließend "Nr 1" und so weiter bis "Nr 10". Stattdessen passiert die ganze Zeit nichts, und der MSIE zeigt nur am Ende der Funktion das Endergebnis dh. "Nr 10". Dies zeigt, daß der MSIE seine Ausgaben nicht aktualisiert, bevor er mit der Funktionsabarbeitung ganz fertig ist. Die Eigenschaft updateInterval hat auch nicht geholfen. Könnte ein JSctipt Kenner sich das ganze anschauen und versuchen eine Lösung zu finden? Ich wäre dafür sehr dankbar. Wichtig: es dürfen keine Außenaktionen dazwischen erfolgen, z.B. Mausklicks. Es muß wie im Beispiel alles "von alleine" gehen. Außerdem darf nicht die ganze Seite neu geladen werden.

Also auf meiner Kiste läuft das ganze in weniger als einer halben Sekunde ab. (hab davor und danach einen alert platziert.

Selbst wenn das langsamer ablaufen sollte auf Deinem Rechner: der Browser ist mit der "Warteschleife" vollauf beschäftigt, hat also gar keine Zeit, das input-Feld neu zu zeichnen.

Beschäftige Dich mit window.setTimeout und Konsorten.

Andreas

Hi Andreas,
Wenn man einen Alert an der entsprechenden Stelle plaziert, dann läuft es selbstverständlich, da das Dokument den Fokus erhält. Hierbei geht es nicht um die Zeit (ich habe absichtich längere Zeiten gewählt, damir das Ganze verfolgt werden kann). Du sagst "der Browser ist mit der "Warteschleife" vollauf beschäftigt,
hat also gar keine Zeit, das input-Feld neu zu zeichnen." Er müßte eigentlich ZUERST das Feld zeichnen und erst dann in die Schleife laufen. Mit window.setTimeout() habe ich auch versucht, aber es ist das Gleiche. Das Problem ist offenbar der prinzipiellen Natur: Der IE zeichnet seine Dokumentelemente nur einmal am Ende der Funktion, unabhängig davon ob er sehr beschäftigt ist oder nicht. Auf jeden Fall danke für Deine Antwort.