2010-12-10 98 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

相关问题