IE v.FF:table.tBodies [0]有效吗?

时间:2010-09-28 23:48:43

标签: javascript html dom prototypejs

从我收集的内容来看,tBodies [0]似乎适用于IE,但不适用于FF。这是IE的错吗?我已经创建了一个小文件来证明这种错误,我想知道最好的方法。

HTML:

<html>
<body>
 <table id="dataGrid">
 </table>
 <input type="button" onclick="insertRow();" value="New row">
</body>
</html>

每次单击按钮时,此脚本都应添加一行。它可以在IE中运行但在Firefox中中断:

<script type="text/javascript" src="/costplan/script/prototype.js"></script>
<script>    
function insertRow(){
 var objTbl = $('dataGrid').tBodies[0]; 
 lastRow = objTbl.rows.length;
 alert(lastRow);
 var newRow = objTbl.insertRow(lastRow);
}
</script>

tBodies [0]无效吗?我不知道为什么,但这段代码在FF和IE中都有效:

<script type="text/javascript" src="/costplan/script/prototype.js"></script>
<script>
function insertRow(){
 var objTbl = $('dataGrid');
 lastRow = objTbl.rows.length;
 alert(lastRow);
 var newRow = objTbl.insertRow(lastRow);
}    
</script>

这些功能中的任何一个是否正确?基本上,我真的不知道发生了什么(我认为这些脚本中至少有一个是无效的,但我不知道是哪个或为什么)。

1 个答案:

答案 0 :(得分:4)

tBodies属性是DOM Level 2标准的一部分,在两个浏览器上都是works

您所遇到的差异是IE 总是TBODY元素作为空表的子元素注入。

如果元素为空,则Firefox,Chrome和其他浏览器不会执行此操作,如果TABLE元素至少有一个TRTH,则会创建{{} 1}}含蓄地。

您可以自己添加TBODY元素,example可以正常运行:

TBODY