据我所知,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>

这两种功能都正确吗?基本上,我不知道到底发生了什么(我认为至少有一个脚本是无效的,但我不知道是哪一个或为什么)。

最佳答案

tBodies属性是DOM Level 2标准的一部分,在两个浏览器上都是works属性。
不同之处在于IE总是将TBODY元素作为空表的子元素注入。
如果元素为空,Firefox、Chrome和其他浏览器不会这样做,如果TABLE元素至少有一个TRTH,它们将隐式创建TBODY
您可以自己添加TBODY元素,您的example将正常工作:

<table id="dataGrid">
  <tbody>
  </tbody>
</table>

09-16 14:58