Mehrere HTML-Tags nacheinander einfügen

  • Hallo,


    Ich möchte gerade über Javascript eine Tabelle mit html Tags hinzufügen. Mein Problem ist, dass trotz loop nur ein "tr"-Tag und nur ein "td"-Tag eingefügt, allerdings brauche ich "seitenlaenge" Male (8) die Tags, sodass ein 8x8 Feld entseht.


    Kann mir jemand sagen was hier fehlt? :

  • Nimm mal das creatElement mit in der schleife rein und kuck mal was passiert. Darf dir nicht zeigen was ich meine,also hoffe mal das du mich verstehst was ich meine.


    Du mußt deinen Code nur etwas umsortieren

  • Ich habe die Lösung gefunden. Ich habe wie ihr meintet die createElements in die Schleifen verteilt und am Ende alles an die Tabelle gehängt.


    Darf ich denn die Lösung posten?

  • Da der TE ja bereits die Lösung hat, gehe ich mal davon aus, dass ich das hier so posten darf. Falls nicht, einfach entfernen...


    Wer viel mit JavaScript zu tun hat, sollte sich mal mit prototype beschäftigen. Gerade dieser Fall, eine Tabelle mit bestimmten Anzahl an Zeilen und Spalten vorzudefinieren, wäre mit ein wenig Anpassungen über prototype auch in dieser Kürze zu erledigen:

    JavaScript
    var _laenge = 8;
    
    _table = document.createElement( 'table' );
    document.body.appendChild( _table.addRows(_laenge).addCols(_laenge, {'class':'foo'}) );

    Dahinter stecken einfach nur die zwei Erweiterungsmethoden addRows und addCols, die ich per prototype an das HTMLTableElement gebunden habe.

    Diese Erweiterungen verwende ich häufig in meinen Projekten, weil mein JavaScript dadurch wesentlich lesbarer wirkt. Ich bin zudem auch kein Freund vieler Schleifen im Hauptcode und lagere daher einiges in die Erweiterungen aus.


    Das macht natürlich nur bei häufiger Verwendung Sinn!

    Nutzt man das nur ein einziges Mal, ist das den Aufwand nicht wert, das ist klar.


    EDIT:

    Hier noch kurz die prototypes für die, die es interessiert

  • Arne Drews, danke für den Tipp;).


    Meine Lüsung sah wie folgt aus:

    Code
    for (i = 0; i < seitenlaenge; i++) {
                var table = document.createElement("table");
                var tr = document.createElement("tr");
                table.appendChild(tr);
                for (j = 0; j < seitenlaenge; j++) {
                    var td = document.createElement("td");
                    tr.appendChild(td);
                }
                document.body.appendChild(table);
            }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!