document.write browser lädt ewig nach
die hilfesuchende
- javascript
0 LX0 molily0 Cybaer
0 die hilfesuchende
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("Ü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>
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
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
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
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?? ;)
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
[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
Ist das geändert worden oder hat die hieige Dokumentantion das immer falsch angegeben?
Aber es ist glaube ich auch geändert worden (von Netscape-JavaScript auf ECMAScript) - aber das war auch schon 1997.
Mathias
[latex]Mae govannen![/latex]
Ist das geändert worden oder hat die hieige Dokumentantion das immer falsch angegeben?
Aber es ist glaube ich auch geändert worden (von Netscape-JavaScript auf ECMAScript) - aber das war auch schon 1997.
Danke.
Cü,
Kai
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
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