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);
?
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);
?
insertRow
wäre das viel besser. Es ist supported von Klasse A-Browsern und es ist weniger ausführlich und eine sauberere API.
Auch Zeilen sind nicht immer untergeordnete Elemente der Tabelle, was die Methode appendChild komplexer macht. –
@rex: was meinst du? – erikkallen
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
Quelle
2009-05-18 20:28:54 James
Wenn Sie DOM-Methoden tun verwenden, sollte ein tr zu einem tbody, thead oder tfoot Element angehängt werden, und nicht zu einem Tabellenelement.
Quelle
2009-05-18 22:19:52 kennebec
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.
Quelle
2010-09-17 01:07:10 Andrew
Verwandte Themen