Javascript getElementsByTagName破坏firefox?
我在Firefox中遇到了最奇怪的Javascript问题 我试图操作一些表行,但是Javascript getElementsByTagName破坏firefox?,javascript,html,getelementsbytagname,Javascript,Html,Getelementsbytagname,我在Firefox中遇到了最奇怪的Javascript问题 我试图操作一些表行,但是.getElementsByTagName(“tr”)正在回收垃圾 dynamicTable.tableBody = dynamicTable.getElementsByTagName("tbody")[0]; var tableRows = dynamicTable.tableBody.getElementsByTagName("TR"); var actualTableRows = new Array();
.getElementsByTagName(“tr”)代码>正在回收垃圾
dynamicTable.tableBody = dynamicTable.getElementsByTagName("tbody")[0];
var tableRows = dynamicTable.tableBody.getElementsByTagName("TR");
var actualTableRows = new Array();
for(var i in tableRows) {
var row = tableRows[i];
alert(row.tagName);
if(row.tagName == "TR"){
actualTableRows.push(row);
}
}
dynamicTable.bodyRows = actualTableRows;
令人费解的部分当然是我临时修复错误的方法。出于某种原因,.getElementsByTagName(“tr”)
也在撤回一些函数
顺便说一句,上面的警报类似于“TR TR TR undefined undefined”
我想要的代码是这样的
dynamicTable.bodyRows = dynamicTable.tableBody.getElementsByTagName("tr");
但是bodyrows
不仅仅包含
元素,它还包含前面提到的垃圾元素
有什么想法吗
EDIT:如果我只使用第二块代码,我会在一个有21个表行(tr元素)的表上得到24个元素的列表。第一段代码只是修复问题的一个黑客程序
如果我将警报更改为警报(行)
我会得到:
[object HTMLTableRowElement]
...
function item() {
[native code]
}
21
function namedItem() {
[native code]
}
in
语句中的也在枚举getElementsByTagName
返回的项和namedItem
方法
要对DOM集合等类似数组的元素进行迭代,通常建议使用一个简单的顺序循环,for…in
语句用于枚举对象属性
dynamicTable.tableBody = dynamicTable.getElementsByTagName("tbody")[0];
var tableRows = dynamicTable.tableBody.getElementsByTagName("TR");
var actualTableRows = new Array();
for(var i = 0, n = tableRows.length; i < n; i++) { // <---- simple for loop
var row = tableRows[i];
alert(row.tagName);
if(row.tagName == "TR"){
actualTableRows.push(row);
}
}
dynamicTable.bodyRows = actualTableRows;
dynamicTable.tableBody=dynamicTable.getElementsByTagName(“tbody”)[0];
var tableRows=dynamicTable.tableBody.getElementsByTagName(“TR”);
var actualTableRows=新数组();
for(var i=0,n=tableRows.length;ifor in
也枚举了Ah的项
和namedItem
方法,这是另一个未列出的代码块中的问题,我对它进行了枚举,它回调了tableRows的所有属性,而不仅仅是实际条目。我假设.getElementsByTagName收回了太多内容。