klofi: Verschachtelte Scriptaufrufe und Tabellen

Als erstes mal meinen Quellcode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><title>javascriptverschachtelung</title><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"></head>

<body>
 <table style="border: 2px solid red; width: 100%;">
  <tr>
   <td style="border: 2px solid lime;">erste zeile erste zelle</td>
  </tr>
  <tr>
   <td style="border: 2px solid lime;">
    zweite zeile vor
    <script src='script1.txt' type="text/javascript"></script>
    zweite zeile nach
   </td>
  </tr>
  <tr>
   <td style="border: 2px solid lime;">dritte zeile erste zelle</td>
  </tr>
  <tr>
   <td style="border: 2px solid lime;">
    vierte zeile vor
    <script src='script1.txt' type="text/javascript"></script>
    vierte zeile nach
   </td style="border: 2px solid lime;">
  </tr>       </table>
</body>
</html>

und die script1.txt

document.write("!script1 anfang!");
document.write("<table style='border: 1px solid silver; width: 100%;'>");
document.write("<tr><td style='border: 2px solid black;'>innere tabelle erste zeile erste zelle</td></tr>");
document.write("<tr><td style='border: 2px solid black;'>vor dem inneren script <script type='text/javascript' src='script2.txt'></script> nach innerem script</td></tr>");
document.write("<tr><td style='border: 2px solid black;'>innere tabelle dritte zeile erste zelle</td></tr>");
document.write("</table>");
document.write("!script1 ende!");

und nach die script2.txt

document.write(" ---sollte ganz innen stehen--- ");

Jetzt zum Problem:
Der Text der ganz innen stehen sollte erscheint nach dem Ende des ersten scripes, aber noch vor dem Ende der zweiten Zelle. Der Text der in der inneren Zelle nach dem Aufruf des script2 steht ist aber in der inneren Zelle. Also irgendwie schreibt er das script2 an die falsche Stelle.

Hat einer eine Idee woran das liegen kann? oder noch besser wie es richtig geht?

IE6 und N7.1 zeigen es beide falsch an.