无法使用FireFox在DOM中检索Table Rows集合

时间:2012-02-22 20:53:31

标签: javascript dom

我在firefox(使用10.0.2)中遇到了一个问题,试图使用javascript来检索表中的行。以下在Chrome和IE中工作,但不在Firefox中。

var tbl = "myTable";
var allTR;
allTR = document.getElementById(tbl).childNodes[0].childNodes;

var table = document.getElementById(tbl);
var tbody = table.getElementsByTagName("tbody")[0];
allTR = tbody.getElementsByTagName("tr");
allTR = tbody.children;
allTR  = tbody.childNodes;
allTR = $("#myTable").find("tbody").find("tr");
allTR = $('#myTable tobdy tr');

在Firefox中,生成的allTR对象在Firebug中显示为“未定义”,即使我可以看到它具有长度属性。

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:0)

我觉得你的桌子可能有一些你没有考虑过的空白空间节点。 IE<例如,9不会在其DOM中反映空白文本节点,而所有其他主要浏览器都会这样做,这意味着table.childNodes[0]可能不是您认为的那样。

最简单的解决方案是使用方便且受普遍支持的DOM表属性,例如rows

var allTR = document.getElementById("myTable").rows;

如果您需要,cells元素还有一个方便的<tr>属性。 <tbody>元素也具有rows属性。

答案 1 :(得分:0)

如果你想要表中的所有行:

allTR = document.getElementById(tbl).getElementsByTagName("tr");

如果你想要第一个tbody中的行:

allTR =document.getElementById(tbl).getElementsByTagName("tbody")[0].getElementsByTagName('tr')