2009-05-18 51 views
7

哪種方法是優選的向表添加行?insertRow與appendChild

var tr = tbl.insertRow(-1);

變種TR =使用document.createElement( 'TR'); tbl.appendChild(tr);

回答

5

insertRow會好很多。它是由A級瀏覽器提供的supported,它不那麼冗長,也沒有更清晰的API。

+0

另外,行並不總是表的子項,這使得appendChild方法更加複雜。 – 2009-05-18 20:20:32

+0

@rex:你是什麼意思? – erikkallen 2009-05-18 20:25:14

+0

可能是的孩子,而不是

元素。 – Rob2009-05-18 20:42:01

3

insertRow可能會被認爲是更可靠的,因爲它是DOM [1]。

操作時外DOM的,但試圖在文檔內修改表時(更的appendChild方法是一致地所有測試的瀏覽器(IE6/7,FF3,Chrome2,Opera9)更快的(儘管輕微)共同努力)顯着較慢

換句話說:絕對使用insertRow。進行


這些測試在本地,可能是不可靠的,在這裏看到的來源:http://pastie.org/482023

0

如果你使用DOM方法,一個TR應該被追加到一個TBODY,THEAD,或TFOOT元素,而不是表格元素。

3

我看到很好的insertRow參數,但我發現一個缺點:insertRow只能創建一個新的空行,而appendChild需要一個現有的行對象。使用appendChild,您可以在表格中移動行,將行從一個表移動到另一個表,或者從表中取出一行並稍後放回(對於分頁表而言非常方便)。要執行與insertRow(和insertCell)相同的操作,您必須打包內容,創建新行和單元格,然後將舊內容添加到新單元格。笨拙,看起來效率較低。有沒有更優雅的方式來做到這一點?一個採用現有行對象的insertRow變體會很好。