<!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 = " <span>" + title + ":</span><input type='checkbox' value='" + id + "'/>";
parentNode.innerHTML += text;
}
}
}
}
Test();
</script>
</body>
</html>
[/code]我想生成一个配置页面权限的功能。
但是以上程序只是输出了:目录1,及其下包含的两个页面;
而目录2及其下两个页面没有输出。
我用调试,发现目录1递归完,回来后,没有从data[3]的目录2分支执行下去,而是跳出了整个函数。
看了半天,看不出原因。请指点下。谢谢!
解决方案 »
- 08年发的题为“高分求救对动态表格的计算问题”的贴子所示代码存在缺陷
- extjs4如何遍历grid.columns所有节点?
- 动态创建audio对象时Firefox下没声音
- 定位到锚链接位置后如何改变目标整个DIV块背景变色?
- js有没函数直接输出N个相同字符,例如要输出100个“Z”
- 怎么设定jqueryui中的dialog返回值给input(输入框点击打开dialog,dialog中有一个按钮,点击返回值给输入框,并关闭)
- 怎样用javascript提取硬件信息?
- 如何屏蔽掉超链接的地址
- 参数中带有%怎样传递?
- layui后台布局+实现页面的内部跳转(iframe)
- 【分享】Js俄罗斯方块
- 求解答:如何用js去查找一个cookie
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'),
];
你把new UserPower(22, '2', ' 页面22', 'page22.aspx'),后面那个逗号去了。
效果图
for(i = 0; i < data.length; i++)
改为
for(var i = 0; i < data.length; i++)