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