Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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节点遍历工作正常吗?_Javascript_Dom - Fatal编程技术网

为什么不是';这个javascript节点遍历工作正常吗?

为什么不是';这个javascript节点遍历工作正常吗?,javascript,dom,Javascript,Dom,我主要是一名C#、Java、PHP开发人员;相关数据库已封装。看似无关紧要,但却是我感觉自己又回到了15岁这一说法的一个有效先兆;怒视着这个。。。令人失望的是,简单的javascript似乎没有给我带来任何好处 我的目的是在当前文档中循环遍历节点,评估它们的属性,并在特定节点上执行操作。我的代码如下(同样…如此简单,我觉得自己像个傻瓜),但输出相当不一致 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http

我主要是一名C#、Java、PHP开发人员;相关数据库已封装。看似无关紧要,但却是我感觉自己又回到了15岁这一说法的一个有效先兆;怒视着这个。。。令人失望的是,简单的javascript似乎没有给我带来任何好处

我的目的是在当前文档中循环遍历节点,评估它们的属性,并在特定节点上执行操作。我的代码如下(同样…如此简单,我觉得自己像个傻瓜),但输出相当不一致

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function TraverseDocument()
{
    var Root = document.documentElement;

    for( Element in Root.childNodes )
    {
        document.writeln(Element);
    }
}
</script>
</head>

<body onLoad="javascript: TraverseDocument();">
<div id="test" testAttr="testData">
</div>
</body>
</html>
所有这些都是不足的;显示“未定义”。当前代码(如我的第一个代码块所示)输出以下内容:

0 1 2 length item

有人能告诉我哪里出了问题吗?新手问题;但我还是没能把手指放在上面。提前感谢。

非常简单,您编写的for循环迭代对象的属性,而不是数组中的项,您可能需要的实际上是:

function TraverseDocument()
{
    var Root = document.documentElement;

    for(var i = 0; i < Root.childNodes.length; i++ )
    {
        document.writeln(Root.childNodes[i]);
    }
}
函数遍历文档()
{
var Root=document.documentElement;
对于(var i=0;i
尝试使用
console.log(Element)
以确保您使用的是您认为正在使用的内容。@Neal:对,有些浏览器有
Element()
构造函数,因此可能有一些奇怪之处。我建议使用不同的迭代变量名。Console输出相同的信息(如在我的第三个代码块中),分隔为新行。没有太大的改进。谢谢@Maerics,我会给它一个旋转…在所有情况下都改为iNode;没有改进:-/Lol显然是“foreach”理论的一个了不起的实现。这对我来说非常有效@MadSkunk,非常感谢。
function TraverseDocument()
{
    var Root = document.documentElement;

    for(var i = 0; i < Root.childNodes.length; i++ )
    {
        document.writeln(Root.childNodes[i]);
    }
}