2009-05-18 7 views
7

Welche Methode wird zum Hinzufügen einer Zeile zu einer Tabelle bevorzugt?insertRow vs. appendChild

var tr = tbl.insertRow (-1);

oder

var tr = document.createElement ('tr'); tbl.appendChild (tr);

?

Antwort

5

insertRow wäre das viel besser. Es ist supported von Klasse A-Browsern und es ist weniger ausführlich und eine sauberere API.

+0

Auch Zeilen sind nicht immer untergeordnete Elemente der Tabelle, was die Methode appendChild komplexer macht. –

+0

@rex: was meinst du? – erikkallen

+0

kann ein Kind eines sein, anstatt ein

Element. – Rob

3

insertRow könnte als zuverlässiger argumentiert werden, da es DOM [1] ist.

Die appendChild Methode ist durchweg schneller (wenn auch nur geringfügig) in allen getesteten Browsern (IE6/7, FF3, Chrome2, Opera9), wenn außerhalb des DOM arbeiten, aber wenn man versucht, Tabellen innerhalb des Dokuments zu ändern (eine gemeinsames Unternehmen) es ist deutlich langsamer.

Mit anderen Worten: unbedingt insertRow verwenden.


Diese Tests vor Ort durchgeführt wurden, so nicht zuverlässig sein können, finden Sie in der Quelle hier: http://pastie.org/482023

0

Wenn Sie DOM-Methoden tun verwenden, sollte ein tr zu einem tbody, thead oder tfoot Element angehängt werden, und nicht zu einem Tabellenelement.

3

Ich sehe gute Argumente für insertRow, aber ich einen Nachteil finden: insertRow kann nur eine neue leere Zeile erstellen, während appendChild ein vorhandenes Zeilenobjekt nimmt. Mit appendChild können Sie Zeilen in einer Tabelle verschieben, eine Zeile von einer Tabelle in eine andere verschieben oder eine Zeile aus einer Tabelle entfernen und später wieder einfügen (sehr praktisch für ausgelagerte Tabellen). Um das Gleiche mit insertRow (und insertCell) zu tun, müssten Sie den Inhalt verpacken, neue Zeilen und Zellen erstellen und dann den alten Inhalt den neuen Zellen hinzufügen. Tollpatschig und scheinbar weniger effizient. Gibt es einen eleganteren Weg, dies zu tun? Eine Variante von insertRow, die ein bestehendes Zeilenobjekt übernimmt, wäre schön.

Verwandte Themen