yokel: Neue Zeilen in einer Tabelle anhängen

Hallo zusammen mich beschäftigt folgendes Problem:

Ich möchte gerne an eine Tabelle ständig neue Zeilen anhängen können und habe dies über DOM und die entsprechende Knotenstruktur auch versucht. In diesem Beispiel versuche ich über eine append-Methode, die durch einen Button gestartet wird eine neue Tabellenzeile mit Zelle und Inhalt anzuhängen.
Das tut es aber nicht. Meine Fragen lauten nun:

  • wieso geht es so nicht?
  • geht so was überhaupt?
  • und wenn ja, wie?

Code:
<head>
<script type=text/javascript>
   function append()
   {
       var texNode = document.createTextNode(document.getElementById('tf1').value);
       var newCol = document.createElement("td");
       newCol.appendChild(texNode);
       var newRow = document.createElement("tr");
       newRow.appendChild(newCol);

document.getElementById('tab1').appendChild(newRow);
      }
</script>
</head>

<body>
      <table id="tab1" width="300" align="center" border="1">
         <tr>
            <td>eintrag 1</td>
         </tr>
      </table>
      <br/>
      <input type="text" id="tf1"/>
      <input type="button" onclick="append()" value="START"/>
   </body>

  1. yokel,

    Das tut es aber nicht. Meine Fragen lauten nun:

    • wieso geht es so nicht?

    Weil du nicht beachtet hast, dass tr nicht Kindelement von table ist.

    Aus der HTML DTD:

    <!ELEMENT TABLE - -
         (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
    <!ELEMENT TBODY    O O (TR)+           -- table body -->

    Start- und End-Tag von tbody ist optional, aber dieses ELement ist auch ohne Start- und End-Tag immer vorhanden.

    Live long and prosper,
    Gunnar

    --
    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
  2. Hallo yokel.

    Ich möchte gerne an eine Tabelle ständig neue Zeilen anhängen können und habe dies über DOM und die entsprechende Knotenstruktur auch versucht.

    Warum nicht einfach per http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#table@title=insertRow()?

    Einen schönen Montag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    mathbr:del.icio.us/ mathbr:w00t/