在表中添加行首选哪种方法?
var tr = tbl.insertRow(-1);
或
var tr = document.createElement('tr'); tbl.appendChild(TR);
答案 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元素,而不是附加到表元素。