2009-05-18 17 views
7

¿Qué método se prefiere para agregar una fila a una tabla?insertRow vs. appendChild

var tr = tbl.insertRow (-1);

o

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

?

Respuesta

5

insertRow sería mucho mejor. Es supported por navegadores de grado A y es menos detallado y una API más limpia.

+0

Además, las filas no siempre son elementos secundarios de la tabla, lo que hace que el método appendChild sea más complejo. –

+0

@rex: ¿qué quieres decir? – erikkallen

+0

puede ser un elemento secundario de , en lugar de un elemento

. – Rob

3

insertRow podría argumentarse como más confiable ya que es DOM [1].

El método appendChild es consistentemente más rápido (aunque marginalmente) en todos los navegadores probados (IE6/7, FF3, Chrome2, Opera9) cuando se opera fuera del DOM, pero cuando se trata de modificar tablas dentro del documento (una más esfuerzo común) es significativamente más lento.

En otras palabras: definitivamente use insertRow.


Estas pruebas se llevaron a cabo a nivel local por lo que puede no ser fiable, véase la fuente aquí: http://pastie.org/482023

0

Si usted hace uso de métodos DOM, un tr se debe anexar a un tbody, culata en T, o elemento de tfoot, y no a un elemento de tabla.

3

Veo buenos argumentos para insertRow, pero encuentro una desventaja: insertRow solo puede crear una nueva fila vacía, mientras que appendChild toma un objeto de fila existente. Con appendChild, puede mover filas en una tabla, mover una fila de una tabla a otra, o sacar una fila de una tabla y luego volver a colocarla (muy útil para tablas paginadas). Para hacer lo mismo con insertRow (y InsertCell), deberá empaquetar los contenidos, crear nuevas filas y celdas, y luego agregar los contenidos anteriores a las nuevas celdas. Torpe, y aparentemente menos eficiente. ¿Hay alguna manera más elegante de hacer esto? Una variante de insertRow que tome un objeto de fila existente sería agradable.

Cuestiones relacionadas