2010-09-28 51 views
2

從我收集的信息來看,tBody [0]似乎在IE中工作,但不是FF。這是一個IE錯誤?我已經創建了一個小文件來演示這個問題,我想知道最好的方法來解決這個問題。IE v。FF:是否table.tBodies [0]有效?

的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> 

這兩個函數是正確的嗎?基本上,我真的不知道發生了什麼事情(我認爲這些腳本中至少有一個是無效的,但我不知道爲什麼)。

+0

您使用的原型,是吧? – Pointy 2010-09-28 23:53:03

+0

另外,工作的人是有效的人也不錯。 – Pointy 2010-09-28 23:53:48

+0

正確。據我所知,它只對$函數很重要。 – Josh 2010-09-28 23:54:20

回答

4

tBodies屬性是DOM級別2標準的一部分,它在兩個瀏覽器上都是works

您所遇到的差異是IE 總是TBODY元素作爲空表的子元素注入。

火狐,Chrome和其他瀏覽器不這樣做,如果是空元素,如果TABLE元件具有至少一個TRTH,他們會暗中創建TBODY

您可以通過自己添加TBODY元素,你example不會有任何問題的工作:

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