据我所知,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 总是注入(inject) TBODY
元素作为空表的子元素。
如果元素为空,则 Firefox、Chrome 和其他浏览器不会执行此操作,如果 TABLE
元素至少有一个TR
或TH
,他们将创建TBODY
隐式地。
您可以添加TBODY
你自己的元素,以及你的example将毫无问题地工作:
<table id="dataGrid">
<tbody>
</tbody>
</table>
关于javascript - IE v. FF : Is table. tBodies[0] 有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3817832/