Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getElementsByTagName破坏firefox?_Javascript_Html_Getelementsbytagname - Fatal编程技术网

Javascript getElementsByTagName破坏firefox?

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();

我在Firefox中遇到了最奇怪的Javascript问题

我试图操作一些表行,但是
.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收回了太多内容。