无级别限制菜单(数据库-XML-JavaScript)

博客围绕数据表SM_Menu,运用JavaScript代码构建菜单。定义了多个变量和函数,如Win_load、buildMenus、openclose等,通过操作XML节点,根据菜单的父节点和URL情况生成不同样式的菜单,实现菜单的展开与关闭功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据表   SM_Menu

Name       Parent       MID     Url                                    (MID关键字,自增长)

<html>
<head>
 var objMenuXml;
 var GlobalMID="";
 var GlobalMName=""; 
 var GlobalPMID="";
 var GlobalPMName="";
function Win_load()
 {
  var NodeList = objMenuXml.selectNodes("//SM_Menu[Parent=0]"); //zhangxn 
  menus.innerHTML = buildMenus(NodeList,0);
 }
function buildMenus(xmlClds,nPace)
 {
  var sOutHtml = "<table border=0 >";
  for(var i=0;i<xmlClds.length;i++)
  {
   
   var nMenuID  = xmlClds[i].selectSingleNode("MID").text;
   var sUsers  = xmlClds[i].selectSingleNode("Name").text;
   var sDisabled ="";
  
   if(Trim(xmlClds[i].selectSingleNode("Url").text) == "")
   {
    sOutHtml += "<tr><td><div style='position:relative;left:" + nPace*15 + "px;'>";
    sOutHtml += "<img src='../images/bnclose.gif' id='mimg" + nMenuID  + "' onclick='javascript:openclose(mimg" + nMenuID + ",mdiv" + nMenuID + ","+nMenuID+","+eval(nPace+1)+" );' style='position:relative;top:-1px;'>";
    sOutHtml += "<a class='ctltxt' href='javascript:openclose(mimg" + nMenuID + ",mdiv" + nMenuID +" ,"+nMenuID+","+eval(nPace+1)+" );'>" + xmlClds[i].selectSingleNode("Name").text + "</a>";
    sOutHtml += "</div><input type='hidden' width='0' id='hidTxt"+nMenuID+"' value='0'></td><tr>";
    sOutHtml += "<tr><td><div id=mdiv" + nMenuID + " style='display:none'>";
    sOutHtml += "</div></td></tr>";
   }
   else
   {
    sOutHtml += "<tr><td><div style='position:relative;left:" + (nPace*15+9) + "px;'>";
    sOutHtml += "<a href='javascript:checkRegedit(" + nMenuID + ")'>" + xmlClds[i].selectSingleNode("Name").text + "</a>";
    sOutHtml += "</div></td></tr>";
   }
  }
  sOutHtml += "</table>";
  return sOutHtml;
 }
function openclose(img,div,id,space)
 {
  GlobalMID   = id;
  GlobalMName = objMenuXml.selectSingleNode("//SM_Menu[MID="+GlobalMID+"]/Name").text;
  GlobalPMID  = objMenuXml.selectSingleNode("//SM_Menu[MID="+GlobalMID+"]/Parent").text;
  if (GlobalPMID == "0")
   GlobalPMName = "一级菜单";
  else
   GlobalPMName = objMenuXml.selectSingleNode("//SM_Menu[MID="+GlobalPMID+"]/Name").text;
   
  if (img == 0 )
   return;
  var tmpTxt;
  eval("tmpTxt=hidTxt"+GlobalMID+".value");

  if(div.style.display == "none")
  {
   img.src = "../images/bnopen.gif";
   if(tmpTxt == '0')
   {
    div.innerHTML = buildMenus(objMenuXml.selectNodes("//SM_Menu[Parent="+GlobalMID+"]"),space);
    eval("hidTxt"+GlobalMID+".value=1");
   }
   div.style.display = "block";
  }
  else
  {
   img.src = "../images/bnclose.gif";
   div.style.display = "none";
  }
 }
</head>
<body onload=win_onload()>
<div id=menus style="BORDER-RIGHT: #6369a5 1px solid; TABLE-LAYOUT: fixed; BORDER-TOP: #6369a5 1px solid; PADDING-LEFT: 7px; MARGIN: 8px 1px 10px; OVERFLOW: auto; BORDER-LEFT: #6369a5 1px solid; WIDTH: 99%; PADDING-TOP: 5px; BORDER-BOTTOM: #6369a5 1px solid; HEIGHT: 95%"
      align=left></div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangxuenian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值