Tommekk: document.write() funktioniert nicht innerhalb einer Funktion

Hallo,
ich hab ein Problem und brauche eure Hilfe:
(Das eigentliche Problem ist weiter unten beschrieben, davor gibt es eine "kurze" Erklärung was das alles soll)

Ich hab mich entschlossen nicht das ganze Script zu posten, da es u.U. etwas verwirrend sein könnte. Von daher habe ich ein kurzes Beispielscript geschrieben in dem das Problem verdeutlicht wird.

Im richtigen Script sollen verschiedene Funktionen zeitgesteuert ablaufen; der genaue Ablauf wird mit PHP aus eine Datenbank gelesen, als String als Variable definiert, dann gesplittet und ist dann als Array verfügbar.
Darin ist zum einen die Art der Aktion und zum anderen die Pause bis zur nächsten Aktion gespeichert.

In dem vereinfachten Beispiel soll als Aktion nur ein "x" ausgegeben werden und die Pause beträgt immer eine Sekunde.

HIER DAS PROBLEM:
Der Befehl "document.write('x')" überschreibt den gesamten Quelltext mit einem einzigen "x". Das hat zur Folge, dass es keine Funktion "next()" mehr gibt die erneut gestartet werden könnte.

Hier das Beispiel:
------------------------------------------
<script type="text/javascript">
var intPause = 1000;
function next() {
 document.write('x');
 setTimeout('next()', intPause);
}
</script>

<a href='javascript:next()'>next</a>
------------------------------------------
(Der Link startet die Funktion)

Das Problem tritt sowohl beim IE als auch mit Firefox auf.

Schonmal Danke im Vorraus!

Tommekk

  1. hi,

    HIER DAS PROBLEM:
    Der Befehl "document.write('x')" überschreibt den gesamten Quelltext mit einem einzigen "x".

    ja, genau das bewirkt document.write, wenn du es nach dem rendern des dokumentes aufrufst.

    Das hat zur Folge, dass es keine Funktion "next()" mehr gibt die erneut gestartet werden könnte.

    gut erkannt.

    Das Problem tritt sowohl beim IE als auch mit Firefox auf.

    natürlich, das muss es.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke,

      HIER DAS PROBLEM:
      Der Befehl "document.write('x')" überschreibt den gesamten Quelltext mit einem einzigen "x".

      ja, genau das bewirkt document.write, wenn du es nach dem rendern des dokumentes aufrufst.

      Gibt es eine andere Möglichkeit nach dem rendern in die Seite zu schreiben?

      thx
      Tommekk

      1. Γειά σου, Tommekk!

        Der Befehl "document.write('x')" überschreibt den gesamten Quelltext mit einem einzigen "x".

        ja, genau das bewirkt document.write, wenn du es nach dem rendern des dokumentes aufrufst.

        Gibt es eine andere Möglichkeit nach dem rendern in die Seite zu schreiben?

        Ja, wie Scar dir bereits angedeutet hat, kannst du mit den Eigenschaften und Methoden, die dir das Document Object Model (DOM) zur Verfügung stellt, bequem auf alle Elemente deiner HTML-Seite zugreifen und sie und ihre Eigenschaften und Inhalte nach Belieben ändern, entfernen oder auch neue hinzufügen.

        Als Lektüre empfiehlt sich etwa das SELFHTMl-Kapitel über das DOM.

        Пока!
        Sven aus Bonn

        --
        Do it yourSELF! ;-)
        Selfcode: ie:% fl:( br:> va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:) mo:} zu:) - Selfcode dekodieren - Selfcode-Info
        Athen rückt in Sichtweite. ;-)
        1. Danke an alle,

          ich habs jetzt so gelöst:

          <script type="text/javascript">
          var intPause = 1000;
          function next() {
           document.all.text.innerHTML = document.all.text.innerHTML + 'x';
           setTimeout('next()', intPause);
          }
          </script>

          <a href='javascript:next()'>next</a>

          <div id='text'></div>

          1. Tach,

            document.all.text.innerHTML = document.all.text.innerHTML + 'x';

            das ist eine ziemlich schlechte Lösung, da dies eine Syntax ist, die eigentlich nur der IE versteht.

            mfg
            Woodfighter

            1. document.all.text.innerHTML = document.all.text.innerHTML + 'x';

              das ist eine ziemlich schlechte Lösung, da dies eine Syntax ist, die eigentlich nur der IE versteht.

              hast recht, firefox hat mich auch darauf hingewiesen
              ich werde das mit document.getElementById() machen

              gruß
              Tommekk

  2. hallo,

    je nachdem was du machen willst, könntest du mit DOM manipulation dein problem lösen können.

    grüße Chris

    1. Danke nochmal,

      je nachdem was du machen willst, könntest du mit DOM manipulation dein problem lösen können.

      Ich versteh nicht so ganz was du meinst, wie genau?

      thx
      Tommekk