A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张洪慊 高级黑马   /  2013-8-21 20:32  /  1140 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.   /*JavaScript*/
  2. /*递归遍历*/
  3. function listNodes(node,level){
  4.            printNodes(node,level);
  5.            var childs=node.childNodes;
  6.            ++level;
  7.            for(var index=0;index<childs.length;++index)
  8.                    if(childs[index].hasChildNodes())
  9.                          listNodes(childs[index],level);
  10.                else
  11.                          printNodes(childs[index],level);
  12.   }
  13.        


  14. /*为了凸显层级关系使用 空格和"|--"组合*/
  15. function nodeLevels(level){
  16.           var blankStr="";
  17.           for(var i=0;i<level;++i)
  18.             blankStr+=" ";
  19.           blankStr+="|--";
  20.          return blankStr;
  21.         }

  22. var str="";
  23. function printNodes(node,level){
  24.         str += nodeLevels(level)+node.nodeName+
  25.                            "..."+node.nodeType+"..."+node.nodeValue+" "+"<br/>";
  26.              
  27.                  /*以下两个测试,可以把str+=换成str=*/
  28.                  //alert(str);//alert测试一切正常
  29.                 //document.write(str); //加到这发现浏览器没有输出,一行一行write为什么不行?
  30.                
  31.         }
  32.   function getDocumentNodes(){
  33.     listNodes(document,0);
  34.         document.write(str);//正常输出,输出的是最终的字符串
  35.   }
复制代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4.   <title>列出文档中所有节点的层级</title>
  5.   <script type="text/javascript" src="ListNodes.js"></script>
  6. </head>

  7. <body>  
  8.    <!--测试注释-->
  9.    <script type="text/javascript">
  10.       getDocumentNodes();
  11.   </script>

  12. </body>
  13. </html>
复制代码

评分

参与人数 2技术分 +1 黑马币 +30 收起 理由
吕振中 + 30 很给力!
杨增坤 + 1

查看全部评分

2 个回复

倒序浏览
???????
张兄咋了,没怎么看懂
回复 使用道具 举报
也就是说你把上面的printNodes()换成
function printNodes(node,level){

27.        str = nodeLevels(level)+node.nodeName+

28.                           "..."+node.nodeType+"..."+node.nodeValue+" "+"<br/>";

29.         document.write(str); //用这个浏览器没有输出,一直在执行
              //然后你可以把它换成alert(str)可以弹出每行的结果,正常
33.               

34.        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马