javascript中设置了全局变量但是不管用呢 代码如下:

<script type="text/javascript">
var str="";
function listNode(node,level)
{
printInfo(node,level);
level++;
var nodess=node.childNodes;
for(var x=0;x<nodess.length;x++)
{
if(nodess[x].hasChildNode())
listNode(nodess[x],level);
else
printInfo(nodess[x],level);
}
}
function getSpace(level){
var s="";
for(var x=0;x<level;x++){
s +="|---";
}
return s;
}
function printInfo(node,level){
str=str+getSpace(level)+"name:"+node.nodeName+"<br/>";
}
function getNodes(){
listNode(document,0);
document.write(str);
}
</script>
</head>
<body>
<input type="button" value="test" onclick="demo()">
有两个问题 !1.node.hasChildNode()这个方法API上是说返回值为true or false 但是我感觉我的if(node.hasChildNode())不执行呢 求教 谢谢你们
2.还有就是我的str 感觉不是全局的 printInfo()和getNodes()里的str感觉不是一个 最后数不出网页的标签呢!!!谢谢你们啊

    hasChildNode 打错了,是 hasChildNodes

    因为打错了,所以程序报错了;既然报错,程序无法往下执行,也就进不了 else 分支 printInfo(nodess[x],level);str 是全局的


    如果你想获取网页的所有标签,可以使用 document.getElementsByTagName('*')

    如果你想获取具体某个标签下的所有标签,比如获取 body 下的所有子标签,可以使用 document.body.getElementsByTagName('*')

    getElement 系列函数返回的都不是数组,而且每次遍历都会重新获取一下,所以建议需要遍历的时候,先转成数组;比如:


            var tags = document.getElementsByTagName('*');

            tags = [].slice.call(tags)

            // 可以接着遍历了

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-19
1.node.hasChildNodes()才对,不是Node.
2.function getSpace(level){
var s="";
这里又定义了一次str所以你觉得不是全局的
相似回答
大家正在搜