1

我主要是 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>

现在; 考虑到这只是我在此(教程、示例等)中的第五次通过,并且我在此代码上尝试了一些排列:

// document.writeln(Element.nodeType);
// document.writeln(Element.nodeName);
// document.writeln(Element.nodeValue);

所有这些都不足;显示“未定义”。当前代码(如我的第一个代码块所示)输出以下内容:

0 1 2 length item

谁能指出我在这里出错的地方?菜鸟问题;但是我仍然无法将手指放在上面。提前谢谢。

4

1 回答 1

2

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

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

    for(var i = 0; i < Root.childNodes.length; i++ )
    {
        document.writeln(Root.childNodes[i]);
    }
}
于 2012-12-05T18:40:58.347 回答