我在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中显示为“未定义”,即使我可以看到它具有长度属性。
有谁知道为什么会这样?
答案 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')