java递归遍历某个菜单下的菜单树

java递归遍历某个菜单下的菜单树,第1张

不太清楚你这个Menu是哪来的类,不过如果上文你的程序能执行的话,说明menu.getChilds()是个集合,应该带有size()的函数。你可以取出menu.getChilds()的大小,再从头到尾遍历它。

int count=menu.getChilds().size()

for(int i=0i<counti++)

{

showMenu( ((Menu)menu.getChilds().get(i)) , 0 )

//我估计这些children是个list,可以顺序遍历;但也有

//部分可能是set,那样就得用iterator了。

}

可以参考以下代码,但需要把你自己的数据库链接,表等改一下就可以了

<html>

<head>

<link href='style.css' rel=stylesheet>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<script language="JavaScript" src="TreeMenu.js"></script>

</head>

<body>

<?php

//基本变量设置

$GLOBALS["ID"] =1//用来跟踪下拉菜单的ID号

$layer=1//用来跟踪当前菜单的级数

//连接数据库

$Con=mysql_connect("localhost","root","1234")

mysql_select_db("wiki")

//提取一级菜单

$sql="SELECT * FROM wiki where pid=0"

$result=mysql_query($sql,$Con)

//如果一级菜单存在则开始菜单的显示

if(mysql_num_rows($result)>0) ShowTreeMenu($Con,$result,$layer,$ID)

//=============================================

//显示树型菜单函数 ShowTreeMenu($con,$result,$layer)

//$con:数据库连接

//$result:需要显示的菜单记录集

//layer:需要显示的菜单的级数

//=============================================

function ShowTreeMenu($Con,$result,$layer)

{

//取得需要显示的菜单的项目数

$numrows=mysql_num_rows($result)

//开始显示菜单,每个子菜单都用一个表格来表示

echo "<table cellpadding='0' cellspacing='0' border='0'>"

for($rows=0$rows<$numrows$rows++)

{

//将当前菜单项目的内容导入数组

$menu=mysql_fetch_array($result)

//提取菜单项目的子菜单记录集

$sql="select * from wiki where pid=$menu[cid]"

$result_sub=mysql_query($sql,$Con)

echo "<tr>"

//如果该菜单项目有子菜单,则添加JavaScript onClick语句

if(mysql_num_rows($result_sub)>0)

{

echo "<td width='20'><img src='folder.gif' border='0'></td>"

echo "<td class='Menu' onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].")'>"

}

else

{

echo "<td width='20'><img src='file.gif' border='0'></td>"

echo "<td class='Menu'>"

}

//如果该菜单项目没有子菜单,并指定了超级连接地址,则指定为超级连接,

//否则只显示菜单名称

//if($menu[url]!="")

//echo "<a href='$menu[cid]'>$menu[name]</a>"

//else

echo $menu['name']

echo "

</td>

</tr>

"

//如果该菜单项目有子菜单,则显示子菜单

if(mysql_num_rows($result_sub)>0)

{

//指定该子菜单的ID和style,以便和onClick语句相对应

echo "<tr id=Menu".$GLOBALS["ID"]++." style='display:none'>"

echo "<td width='20'></td>"

echo "<td>"

//将级数加1

$layer++

//递归调用ShowTreeMenu()函数,生成子菜单

ShowTreeMenu($Con,$result_sub,$layer)

//子菜单处理完成,返回到递归的上一层,将级数减1

$layer--

echo "</td></tr>"

}

//继续显示下一个菜单项目

}

echo "</table>"

}

?>

</body>

</html>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9997789.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存