insertRow与appendChild

时间:2009-05-18 20:12:42

标签: javascript dom dhtml

在表中添加行首选哪种方法?

var tr = tbl.insertRow(-1);

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

4 个答案:

答案 0 :(得分:5)

insertRow会好得多。 A级浏览器为supported,而且它的详细程度较低且API更清晰。

答案 1 :(得分:3)

insertRow可能被认为更可靠,因为它是DOM [1]。

在操作DOM的时,appendChild方法在所有测试的浏览器(IE6 / 7,FF3,Chrome2,Opera9)中始终更快(尽管略有差异),但在尝试时修改文档中的表格(更常见的尝试)明显更慢

换句话说:绝对使用insertRow


这些测试是在本地进行的,因此可能不太可靠,请参阅此处的来源:http://pastie.org/482023

答案 2 :(得分:3)

我看到了insertRow的好参数,但我发现一个缺点:insertRow只能创建一个新的空行,而appendChild会获取一个现有的行对象。使用appendChild,您可以在表中移动行,在一个表中移动一行到另一个表,或从表中取出一行,然后将其放回(对于分页表非常方便)。要对insertRow(和insertCell)执行相同操作,您必须打包内容,创建新行和单元格,然后将旧内容添加到新单元格。笨拙,看似效率低下。有没有更优雅的方式来做到这一点?采用现有行对象的insertRow变体很不错。

答案 3 :(得分:0)

如果你使用dom方法,tr应该附加到tbody,thead或tfoot元素,而不是附加到表元素。