2010-12-10 101 views
0

給定了使用getElementById找到的表的元素,我需要獲取body元素並向其中添加一行。這在Chrome中失敗了:getElementsByTagName('TBODY')在Chrome中失敗

var tabBody = expressionTable.getElementsByTagName('TBODY')[0];

但在IE中工作。如何在所有瀏覽器(即8,Chrome,FF和Safari)中獲取正文?

代碼如下所示: var expressionTable = document.getElementById(tableID); var tabBody = expressionTable.getElementsByTagName('tbody')[0]; var expressionRow = createExpressionRow(FieldTagsValue,row); tabBody.appendChild(expressionRow);

tabody是「未定義」

我想可能是因爲表開始爲空,而Chrome不具備的空表一個tbody元素。這可能嗎?

感謝, 布賴恩

回答

2

不靠任何東西在IE工作 - 它可能會略有行爲不規範。 我也建議不要期望您的HTML中沒有聲明存在於DOM中的標籤。

我會嘗試用一個明確的tbody標籤去,如果你不依賴於它在DOM存在:

<table> 
    <tbody></tbody> 
</table> 

我知道jQuery有用於處理(在IE)表中一些解決方法 - 所以,除非你」重病人找出所有的黑客自己,我會去與在jQuery這樣的庫,並添加表元素是這樣的:

$('#' + tableID).append(expressionRow); 
+0

那是什麼東西,它無法在Chrome存在。我這樣做,但我也喜歡你的解決方案 if(tabBody == undefined){var tabBody = document.createElement(「TBODY」); expressionTable.appendChild(tabBody); } – BrianK 2010-12-10 16:44:30

+0

@BrianK好吧,我說這一切都取決於如何耐心,你會與確保您的DOM代碼在所有瀏覽器中正常工作... :) – kares 2010-12-10 16:48:19

相關問題