Hallo, Shir Khan!
Vielen Dank für Deine Hinweise, jetzt klappt es und ich habe auch verstanden, worin der Fehler lag.
Zu Deiner zweiten Frage: Wie so nicht document.write()???
Kannst Du schon, aber ich glaube, dann muß das Skript nach dem Body kommen. Ein Aufruf von document.write zerstört das aktuelle Dokument und macht es wieder zum Schreiben bereit.
Jein, das ist hier nicht entscheidend. Denn das Script welches die Funktion aufruft, die die Ausgabe vornimmt, kommt nach dem Body (bzw. am Ende des Bodys, da sich nach </body> kein Script mehr aufhalten darf).
Da ist es eigentlich unwichtig, wo die Funktion definiert ist, entscheidend ist, wo im Dokument die Ausgabe erfolgt.
Und dass das Dokument geleert wird, glaube ich auch nicht. Denn folgendes funktioniert:
<html>
<head>
<script type="text/javascript">
function ausgabe (s) {
document.write(s+"<br>");
}
</script>
</head>
<body>
eins<br>
<script type="text/javascript">
ausgabe("zwei")
</script>
drei<br>
<script type="text/javascript">
ausgabe("vier")
</script>
</html>
Ausgabe ist wie gewünscht:
eins
zwei
drei
vier
Ich kann einfach nicht vorhersagen, wann der Dokumentinhalt geleert wird und wann nicht... Wenn man die bspw. Funktion mit setTimeout zeitversetzt aufruft, dann findet eine Löschung statt.
Wenn also erst das Skript kommt, dann lese ich den ersten Knoten, denn wird das Dokument weggeschmissen ==> dann gibts nur noch den Knoten, den DU eben geschrieben hast, will heißen: ENDLOSSCHLIEFE...
Ja, das ist wohl die Fehlerursache. Also nicht dass nur noch ein Knoten da ist durch die Löschung des Inhalts, sondern dass immer neue Knoten am Ende des Dokuments entstehen.
Jede Funktionsinstanz erzeugt mehrere Knoten, welche dann von den folgenden Instanzen untersucht werden - diese geben aber wieder dutzende Knoten aus...
Kaskadenartig steigt so die Anzahl der noch zu bearbeitenden Knoten, daher die Endlosschleife.
Ich hab's noch einmal mit document.write getestet, aber die Ausgabe limitiert, sodass keine Endlosschleife entsteht. Tatsächlich durchläuft das Skript alle Knoten des Dokumentes und dann die Knoten, die es selbst ausgegeben bzw. eingefügt hat.
Grüße,
Mathias