Christian S.: Problem mit JS Code / DOM / dynamisches Füllen einer tabelle

Hi,

habe ein kleines Problem mit folgendem JS-Code:

function Test(e)
{
    var table = document.getElementById("test");

while (table.childNodes[0])
    {
        table.removeChild(table.childNodes[0]);
    }

var tr = document.createElement("tr");
    var th1 = document.createElement("th");
    var th2 = document.createElement("th");
    th1.innerHTML = "Nachname";
    th2.innerHTML = "Vorname";
    tr.appendChild(th1);
    tr.appendChild(th2);
    table.appendChild(tr);
}

[...]

HTML:
<table border="1" id="test" style="background-color: Gray;width:200px; height: 200px;">
</table>

die Funktion wird von einem Event getriggert.

Im Firefox klappts auch fast. Jedoch scheint er bei jedem Funktionsaufruf "mehr" in die tabelle hinzuzufügen.
Also sieht etwa so aus wie leere Zeilen, die er unter die Kopfzeile hinzufügt werden.

Die Tabelle muss nur bei jedem Event mit anderen Daten gefüllt werden. Dazu wollte ich halt jedesmal erst alle Zeilen löschen und dann neu befüllen.

Im IE (7) klappt es übrigens gar nicht. Es wird nicht einmal eine graue Fläche angezeigt.

Gruß
Christian

  1. Hello out there!

    table.appendChild(tr);

    Nein, 'tr' ist in HTML niemals Kind von 'table'. Oh Nostradamus ...

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Hello out there!

      table.appendChild(tr);

      Nein, 'tr' ist in HTML niemals Kind von 'table'. Oh Nostradamus ...

      See ya up the road,
      Gunnar

      Ja danke! Funktioniert mit tbody.

      Ganz verstehen tu ich es dennoch nicht. SelfHTML ist da anderer Ansicht.

      Gruß
      Christian

      1. Hello out there!

        Ganz verstehen tu ich es dennoch nicht.

        Du hast dich in dem über Ecken verlinkten Thread </archiv/2005/1/t98786/> nicht umgesehen? Lies von </archiv/2005/1/t98786/#m602573> an abwärts.

        SelfHTML ist da anderer Ansicht.

        Falscher Ansicht.

        See ya up the road,
        Gunnar

        --
        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
      2. Hi,

        Ganz verstehen tu ich es dennoch nicht. SelfHTML ist da anderer Ansicht.

        Nein, ist es nicht.

        TBODY ist (ab HTML 4) ein Pflichtelement von TABLE - allerdings ist die Notation optional. Und das schreibt auch SELFHTML.

        D.h.: TBODY ist gemäß der DTD immer vorhanden, auch wenn man es nicht unbedingt notieren muß. Wenn Du es nicht selbst notierst, sorgt also der Browser automatisch dafür.

        Gruß, Cybaer

        --
        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"!
        1. Hello out there!

          SelfHTML ist da anderer Ansicht.

          Nein, ist es nicht.

          Doch, ist es. Da steht: „tr […] Elternelemente[:] […] table […]“

          TBODY ist (ab HTML 4) ein Pflichtelement von TABLE - allerdings ist die Notation optional. Und das schreibt auch SELFHTML.

          Nicht in der HTML-Elementreferenz. [[ref:bug;1634@title=BUG1634]]

          See ya up the road,
          Gunnar

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

            Doch, ist es. Da steht: „tr […] Elternelemente[:] […] table […]“

            Oh - dann ist es Pech, daß explizit drübersteht, daß man sich auf HTML 4 bezieht ... >;->

            Gruß, Cybaer

            --
            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"!