黑马程序员技术交流社区

标题: 递归DOM树出现的问题 [打印本页]

作者: 张洪慊    时间: 2013-8-21 20:32
标题: 递归DOM树出现的问题
  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>
复制代码

作者: 神之梦    时间: 2013-8-21 20:49
???????
张兄咋了,没怎么看懂
作者: 张洪慊    时间: 2013-8-21 21:46
也就是说你把上面的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.        }





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2