首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

请问一上递归生成树形结构

2013-02-24 
请教一下递归生成树形结构。!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www

请教一下递归生成树形结构。


<!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>
    <title></title>
</head>
<body>

 <div id="divContainer"></div> 

 [code=javascript]
  <script type="text/javascript">
 
 function UserPower(id, parentId, title, url)
 {
    this.Id = id;
    this.ParentId = parentId;
    this.Title = title;
    this.URL = url;
 }
 
function ParseDom(content) 

  var newObject = document.createElement("div");
  newObject.innerHTML = content;   
  return newObject.childNodes[0];  
};
 
 function Test()
 {
     var data = 
     [ 
        new UserPower(1, '', '目录1', ''), 
        new UserPower(11, '1', '页面11', 'page11.aspx'),
        new UserPower(12, '1', ' 页面12', 'page12.aspx'),
        new UserPower(2, '', '目录2', ''), 
        new UserPower(21, '2', '页面21', 'page21.aspx'),
        new UserPower(22, '2', ' 页面22', 'page22.aspx'),
     ]; 
  
     var rootNode = document.getElementById("divContainer");
     GreateMenu(data, '', rootNode);      
 }
 

function GreateMenu(data, parentNodeId,  parentNode)
{         
    for(i = 0; i < data.length; i++)
    {
        var id = data[i].Id;
        var parentId = data[i].ParentId;   
        var title = data[i].Title;
        var url = data[i].URL;           
        
        if(parentId == parentNodeId)
        {                       
           if(url.length == 0) //Directory
           {
              var newNode = ParseDom("<fieldset><legend>" + title + "</legend></fieldset>");
              parentNode.appendChild(newNode);

              GreateMenu(data, id, newNode);                                       


           }              
           else //Page
           {
               var text = "&nbsp;&nbsp;&nbsp;&nbsp;<span>" + title + ":</span><input type='checkbox' value='" + id + "'/>";                    
               parentNode.innerHTML += text;
           }                     
        }
    }
}

 
 Test();
 
 </script>




</body>
</html>


[/code]

我想生成一个配置页面权限的功能。
但是以上程序只是输出了:目录1,及其下包含的两个页面;
而目录2及其下两个页面没有输出。
我用调试,发现目录1递归完,回来后,没有从data[3]的目录2分支执行下去,而是跳出了整个函数。
看了半天,看不出原因。请指点下。谢谢!

热点排行