1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Tabelle dynamisch erstellen

Discussion in 'Web-Know-how für die Homepage' started by rt13_zrtnzna7qr, Aug 22, 2004.

Thread Status:
Not open for further replies.
  1. 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

    Sowas würde ich nicht mit JavaScript machen, sondern, mit PHP und einer Schleife.
     
  3. du bist der beste :aua:
     
  4. kalweit

    kalweit Hüter der Glaskugel

    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
     
Thread Status:
Not open for further replies.

Share This Page