die hilfesuchende: document.write browser lädt ewig nach

Hallo zusammen!

Ich habe ein Problem mit dem folgenden Skript:
Aus irgendeinem Grund läd der Browser nach drücken des Buttons noch ewig nach. Prinzipiell funktioniert es aber, wie es soll.

Ich steh wie Ochs vor'm Berg und hoffe, ihr könnt mir helfen.
Danke!  :-)

<html>  
<head>  
<title>Test</title>  
</head>  
<body>  
<script type="text/javascript">  
function FelderEinblenden()  
{  
   bla = document.getElementById('blubb').value;  
   var i;  
  if (isNaN(bla)) {  
    alert("Bitte nur Nummern angeben!");  
    return;  
  }  
	  document.write("&Uuml;berschrift<br><br>");  
  for (i = 1; i <= bla; ++i) {  
    document.write("die"+ i +". Zeile <br>");  
	}  
document.write("Ende");	  
}  
</script>  
  
<form name="Abfrage"><table><tr valign="middle" ><td rowspan="2">  
Wieviel Zeilen sollen angezeigt werden?</td><td>  
<input type="text" name="Eingabezahl" id="blubb"></td></tr><tr><td>  
<input type="submit" value="Zeilen anzeigen"onclick="FelderEinblenden()">  
</td></tr>  
</table>  
</form>  
</body>  
</html>
  1. document.write sollte man nur bis zum Abschluss des Ladens der Seite verwenden - danach empfiehlt sich die Anwendung von document.appendChild/createElement sowie innerHTML.

    Gruß, LX

    --
    RFC 1925, Satz 3: Mit ausreichendem Schub fliegen Schweine wunderbar. (...)
  2. Wie gesagt solltest du eher DOM-Methoden verwenden als document.write. Mit document.write kannst du das gesamte Dokument durch ein neues auswechseln. Dann musst du aber vorher

    http://de.selfhtml.org/javascript/objekte/document.htm#open@title=document.open();

    aufrufen und nach den document.write-Anweisungen

    http://de.selfhtml.org/javascript/objekte/document.htm#close@title=document.close();

    Das aktuelle Dokument mitsamt Formular geht dann natürlich verloren.

    Mathias

    1. Hi,

      mit document.write kannst du das gesamte Dokument durch ein neues auswechseln. Dann musst du aber vorher

      http://de.selfhtml.org/javascript/objekte/document.htm#open@title=document.open();

      aufrufen

      Auch wenn man es heute nur noch selten braucht:

      open() muß nicht vorher aufgerufen werden, das geschieht beim ersten write() automatisch, sofern das Dokument nicht noch offen ist.

      Deswegen löscht eben auch ein nachträgliches write() immer das alte Dokument ...
      ... und der Programmierer wundert sich. ;-)

      http://de.selfhtml.org/javascript/objekte/document.htm#close@title=document.close();

      Und wenn man nicht schließt, lädt der Browser (in Erwartung kommender Daten) halt ewig ...

      Gruß, Cybaer

      --
      Zweck des Disputs oder der Diskussion soll nicht der Sieg, sondern der Gewinn sein.
      (Joseph Joubert, Schriftsteller)
  3. Danke schonmal für die netten Hilfen, prinzipiell klappt es jetzt auch, allerdings scheint es ein Problem mit dem Formularbutton zu geben:

      
    <script type="text/javascript">  
    var Neu = "neuer <b>fetter<\/b> Text";  
    function Aendern () {  
      document.all.meinAbsatz.innerHTML = Neu;  
    }  
    </script>  
    </head><body>  
    <p id="meinAbsatz">Text</p>  
    <a href="javascript:Aendern()">Anderer Text</a>  
      
      
    <form name="PrimzahlFormular" onsubmit="Aendern()"><table><tr valign="middle" ><td rowspan="2">  
    Zeilen sollen angezeigt werden?</td><td>  
    <input type="text" name="Eingabezahl" id="blubb"></td></tr><tr><td>  
    <input type="submit" value="Teilnehmer anmelden"">
    

    Wenn ich den Link klicke, wird der Text korrekt geändert, beim Button springt es kurz um und dann wieder zurück. Auch wenn ich den Event-Handler onclick auf den Button lege, zeigt sich kein Unterschied.

    Ideen?? ;)

    1. document.all.meinAbsatz.innerHTML = Neu;

      Verwende besser document.getElementById("meinAbsatz") anstelle von document.all.meinAbsatz.

      document.all ist eine veraltete Technik von Microsoft, die nur für Internet Explorer 4 relevant ist (wir sind bei 8).

      <form name="PrimzahlFormular" onsubmit="Aendern()">

      Wenn ich den Link klicke, wird der Text korrekt geändert, beim Button springt es kurz um und dann wieder zurück.

      Ja - weil das Dokument neu geladen wird. Weil das Formular abgesendet wird. Und zwar an dasselbe Dokument. (Wenn du kein action-Attribut angibst, wird action="" angenommen, und »« ist eine relative URI, die auf das aktuelle Dokument verweist.)

      Wenn du verhindern willst, dass das Formular abgesendet wird, dann musst du die Standardaktion verhindern:

      onsubmit="Aendern(); return false"

      Übrigens besteht kein Grund, eine JavaScript-Funktion »Aendern« anstatt »Ändern« zu nennen.

      Mathias

      1. [latex]Mae  govannen![/latex]

        Übrigens besteht kein Grund, eine JavaScript-Funktion »Aendern« anstatt »Ändern« zu nennen.

        Ist das geändert worden oder hat die hieige Dokumentantion das immer falsch angegeben? In SelfHTML wird jedenfalls gegenteiliges behauptet:

        | • sie dürfen keine deutschen Umlaute oder scharfes S enthalten

        (Ich rede nicht davon, ob es (mehr oder weniger zufällig) in (allen) bekannten Browsern funktioniert)

        Cü,

        Kai

        --
        „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
        „Hit it!“
        Selfzeugs
        SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
        1. Ist das geändert worden oder hat die hieige Dokumentantion das immer falsch angegeben?

          Letzteres.

          Aber es ist glaube ich auch geändert worden (von Netscape-JavaScript auf ECMAScript) - aber das war auch schon 1997.

          Mathias

          1. [latex]Mae  govannen![/latex]

            Ist das geändert worden oder hat die hieige Dokumentantion das immer falsch angegeben?

            Letzteres.

            Aber es ist glaube ich auch geändert worden (von Netscape-JavaScript auf ECMAScript) - aber das war auch schon 1997.

            Danke.

            Cü,

            Kai

            --
            „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
            „Hit it!“
            Selfzeugs
            SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
          2. Hi,

            Aber es ist glaube ich auch geändert worden (von Netscape-JavaScript auf ECMAScript) - aber das war auch schon 1997.

            Konkret: mit JS 1.0 auf JS 1.1.

            Gruß, Cybaer

            --
            Zweck des Disputs oder der Diskussion soll nicht der Sieg, sondern der Gewinn sein.
            (Joseph Joubert, Schriftsteller)
    2. Hallo,

      Wenn ich den Link klicke, wird der Text korrekt geändert, beim Button springt es kurz um und dann wieder zurück. Auch wenn ich den Event-Handler onclick auf den Button lege, zeigt sich kein Unterschied.

      Wenn Du den Submit-Button drückst, wird das Formular abgesendet und die Seite damit neu geladen. Gib der Funktion "Aendern" ein "return false" mit - damit wird das Versenden verhindert; oder ändere den Typ des Buttons auf "button" und ruf die Funktion mittels onclick auf.

      Grüße Sebastian

      --
      Das größte Übel der heutigen Jugend besteht darin, dass man nicht mehr dazugehört.
      Salvador Dali