El Supremo: IE schreibt Tabellenzeile nicht ins Dokument

Hallo,

ich habe ein Problem mit dem IE. Mein Skript soll in eine bereits bestehende Tabelle eine Tabellenzeile samt Zelle und Inhalt schreiben. In FF, Opera und Netscape funktioniert das auch problemlos, nur der IE tut einfach nichts. Hier mal ein einfacher Test:

<!DOCTYPE HTML PUBLIC  
   "-//W3C//DTD HTML 4.01//EN"  
   "http://www.w3.org/TR/html4/strict.dtd">  
<html>  
 <head>  
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
  <meta http-equiv="Content-Script-Type" content="text/javascript">  
  <title>Test</title>  
  <script src="testscript.js" type="text/javascript"></script>  
 </head>  
 <body onload="mach_was()">  
<div><table><tr><td>&nbsp;</td></tr></table></div>  
 </body>  
</html>

Das zugehörige Javascript:

function mach_was()  
 {  
  var tr = document.createElement('tr');  
  var td = document.createElement('td');  
  td.appendChild(document.createTextNode('Test'));  
  tr.appendChild(td);  
  document.getElementsByTagName('table')[0].appendChild(tr);  
 }

Kann mir vielleicht jemand sagen, warum das mit dem IE nicht klappt? Das Testskript ist so simpel, ich kann mir irgendwie kaum vorstellen, wo ich da einen Fehler gemacht haben sollte. Aber irgendwas muss ja nicht stimmen...
Ich bin für alle Tipps dankbar! ;-)

--
Ich weiß, dass ich nichts weiß. (Sokrates)
  1. Ich gehe mal davon aus, dass du dich in AJAX versuchst? Wenn möglich, solltest du auf den DOM-Kram verzichten, denn (so meine Erfahrung) die Verarbeitung dauert grade bei längeren Tabellen oder komplexen Vorgängen ewig, selbst bei schnellen Clients. Jag lieber die komplette Tabelle über´s Netz, ist zwar dann nur noch AJA, aber schneller.

    1. Ich gehe mal davon aus, dass du dich in AJAX versuchst? Wenn möglich, solltest du auf den DOM-Kram verzichten, denn (so meine Erfahrung) die Verarbeitung dauert grade bei längeren Tabellen oder komplexen Vorgängen ewig, selbst bei schnellen Clients. Jag lieber die komplette Tabelle über´s Netz, ist zwar dann nur noch AJA, aber schneller.

      Naja, wenn ich ehrlich bin, dann höre ich den Begriff 'AJAX' gerade zum ersten Mal. Werd mich aber mal bei wikipedia schlau machen, denn einen Artikel gibts dazu (soviel weiß ich schon...).
      Geschwindigkeit interessiert mich im Moment aber eigentlich kaum, da das, wofür ich die Tabellenzeile schreiben möchte, eine Just-for-fun-offline-Angelegenheit ist. Aber trotzdem danke für den Hinweis, wie gesagt, ich informiere mich bei Gelegenheit dazu.

      --
      Ich weiß, dass ich nichts weiß. (Sokrates)
      1. Ich gehe mal davon aus, dass du dich in AJAX versuchst?

        Oops, da habe ich  mich getäuscht. Jedenfalls bist du schon ganz nahe am Thema AJAX :-)

        Naja, wenn ich ehrlich bin, dann höre ich den Begriff 'AJAX' gerade »» zum ersten Mal. Werd mich aber mal bei wikipedia schlau machen, denn »» einen Artikel gibts dazu (soviel weiß ich schon...).

        Vorsicht, Verführung! AJAX ist derzeit, das steht im Wiki wohl nicht, zu 75% Hype. Die restlichen 25%, ok, da ist´s wirklich sinnvoll.

        Geschwindigkeit interessiert mich im Moment aber eigentlich kaum, da »» das, wofür ich die Tabellenzeile schreiben möchte, eine
        Just-for-fun-offline-Angelegenheit ist.

        Der Teil von AJAX, den ich Ansprach, passiert offline. Und wenn es bei ein paar Rows bleibt, bitteschön, dann ist es vollkommen ok, wenn du dich weiterbildest.

        1. Hi,

          Vorsicht, Verführung! AJAX ist derzeit, das steht im Wiki wohl nicht, zu 75% Hype. Die restlichen 25%, ok, da ist´s wirklich sinnvoll.

          Why Ajax Sucks (Most of the Time) :)

          Gruß, Cy-"ich freue mich immer, wenn Frame-Hasser mit Ajax ankommen >;->"-baer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. hi,

    Kann mir vielleicht jemand sagen, warum das mit dem IE nicht klappt?

    Weil der IE möchte, dass du dynamisch erzeugte Tabellenzeilen in einen TBody einhängst, statt direkt in die Tabelle.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Weil der IE möchte, dass du dynamisch erzeugte Tabellenzeilen in einen TBody einhängst, statt direkt in die Tabelle.

      Danke für den Tipp, das werd ich ausprobieren.

      --
      Ich weiß, dass ich nichts weiß. (Sokrates)
  3. Hello out there!

    ich habe ein Problem mit dem IE. Mein Skript soll in eine bereits bestehende Tabelle eine Tabellenzeile samt Zelle und Inhalt schreiben.

    Oh Nostradamus ...

    In FF, Opera und Netscape funktioniert das auch problemlos, nur der IE tut einfach nichts.

    Recht hat er. Die anderen Browser sind fehlertolerant. (Archivsuche 2005/2006 "+author:mudguard +tbody +javascript")

    <body onload="mach_was()">

    function mach_was()
    {
      // ...
    }

    Wenn du schon Markup und Präsentationslogik trennst, warum nicht gleich richtig[tm]?

    HTML: einfach nur
      <body>

    Script:

    window.onload = mach_was;  
      
    function mach_was()  
    {  
      // ...  
    }
    

    oder anonym:

    window.onload = function ()  
    {  
      // ...  
    }
    

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Oh Nostradamus ...

      Oh, sorry...

      Wenn du schon Markup und Präsentationslogik trennst, warum nicht gleich richtig[tm]?[...]

      Stimmt eigentlich. Ich werds in Zukunft berücksichtigen, danke!

      --
      Ich weiß, dass ich nichts weiß. (Sokrates)