Tabelle dynamisch erstellen

Dieses Thema im Forum "Web-Know-how für die Homepage" wurde erstellt von rt13_zrtnzna7qr, 22. August 2004.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. rt13_zrtnzna7qr

    rt13_zrtnzna7qr Byte

    Registriert seit:
    8. März 2004
    Beiträge:
    101
    Hallo,
    Ich möchte gerne eine tabelle dynamisch erstellen.
    Dazu habe ich auch bereits eine funktion geschrieben die das macht
    allerdings wird nur das erste "td" erstellt obwohl die anderen genauso erzeugt werden ?
    warum werden die anderen "tds" nicht erstellt ?

    hier der code:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html><head><title>Titel</title><script type="text/javascript"><!--
    function bla()
    {
    var newtr = document.createElement("tr");
    var newtd = document.createElement("td");

    var textf = document.createTextNode("f");
    var textg = document.createTextNode("g");
    var texth = document.createTextNode("h");
    var texti = document.createTextNode("i");
    var textj = document.createTextNode("j");

    document.getElementById("tab").appendChild(newtr);

    document.getElementsByTagName("tr")[0].appendChild(newtd);
    document.getElementsByTagName("tr")[0].appendChild(newtd);
    document.getElementsByTagName("tr")[0].appendChild(newtd);
    document.getElementsByTagName("tr")[0].appendChild(newtd);
    document.getElementsByTagName("tr")[0].appendChild(newtd);

    document.getElementsByTagName("td")[0].appendChild(textf);
    document.getElementsByTagName("td")[1].appendChild(textg);
    document.getElementsByTagName("td")[2].appendChild(texth);
    document.getElementsByTagName("td")[3].appendChild(texti);
    document.getElementsByTagName("td")[4].appendChild(textj);
    }
    //--></script></head>
    <body onLoad="bla()">
    <table>
    <tbody id="tab">

    </tbody>
    </table>

    </body></html>


    auch abrufbar unter:
    http://people.freenet.de/megaman7de/v/versuche.htm
     
  2. Michaell

    Michaell Kbyte

    Registriert seit:
    5. Oktober 2001
    Beiträge:
    222
    Sowas würde ich nicht mit JavaScript machen, sondern, mit PHP und einer Schleife.
     
  3. rt13_zrtnzna7qr

    rt13_zrtnzna7qr Byte

    Registriert seit:
    8. März 2004
    Beiträge:
    101
    du bist der beste :aua:
     
  4. kalweit

    kalweit Hüter der Glaskugel

    Registriert seit:
    18. April 2000
    Beiträge:
    31.487
    Das Problem ist ganz einfach, auch wenn nicht einfach zu verstehen. Du kannst einer Variablen immer nur einen Wert und keine Funktion zuweisen. document.createElement('td') ist simpel gesprochen ein Funktionsaufruf, der ein Ergebnis liefert. In deinem Fall die Referenz auf einen Knoten. Jetzt kannst du die Referenz zwar immer wieder in Form von newtd in einen appendChild packen, aber davon wird kein neuer Knoten erstellt, sondern immer auf den ursprünglichen verwiesen. Zu Lösung musst du den Funktionsaufruf document.createElement('td') selbst als String maskieren und erst beim Einsetzten in appendChild rendern lassen. Dafür gibt es den Befehl eval();

    function bla()
    {
    var newtr="document.createElement('tr')";
    var newtd="document.createElement('td')";

    textf = document.createTextNode("f");
    textg = document.createTextNode("g");
    texth = document.createTextNode("h");
    texti = document.createTextNode("i");
    textj = document.createTextNode("j");

    zeile=document.getElementById("tab").appendChild(eval(newtr));

    zeile.appendChild(eval(newtd)).appendChild(textf);
    zeile.appendChild(eval(newtd)).appendChild(textg);
    zeile.appendChild(eval(newtd)).appendChild(texth);
    zeile.appendChild(eval(newtd)).appendChild(texti);
    zeile.appendChild(eval(newtd)).appendChild(textj);
    }


    Gruss, Matthias
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen