`
sumongh
  • 浏览: 227302 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

<font color="#333333" size="4">简单灵活的权限树</font>

阅读更多
dree 作了一些修改: <o:p></o:p>

1、   增加 Node 的属性,目的是将原来的名称链接改成可选择的 checkbox <o:p></o:p>

 

function Node(id, pid, cname, cvalue, cshow, cchecked, cdisabled, url, title, target, icon, iconOpen, open) {<o:p></o:p>

    this.id = id;<o:p></o:p>

    this.pid = pid;<o:p></o:p>

    //chechbox的名称<o:p></o:p>

    this.cname = cname;<o:p></o:p>

    //chechbox的值<o:p></o:p>

    this.cvalue = cvalue;<o:p></o:p>

    //chechbox的显示<o:p></o:p>

    this.cshow = cshow;<o:p></o:p>

    //chechbox是否被选中,默认是不选<o:p></o:p>

    this.cchecked = cchecked||false;<o:p></o:p>

    //chechbox是否可用,默认是可用<o:p></o:p>

    this.cdisabled = cdisabled||false;<o:p></o:p>

    //节点链接,默认是虚链接<o:p></o:p>

    this.url = url||'#';<o:p></o:p>

    this.title = title;<o:p></o:p>

    this.target = target;<o:p></o:p>

    this.icon = icon;<o:p></o:p>

    this.iconOpen = iconOpen;<o:p></o:p>

    this._io = open || false;<o:p></o:p>

    this._is = false;<o:p></o:p>

    this._ls = false;<o:p></o:p>

    this._hc = false;<o:p></o:p>

    this._ai = 0;<o:p></o:p>

    this._p;<o:p></o:p>

};<o:p></o:p>

2、   将原来节点显示改为 checkbox ,根节点不变,考虑了是否已选和是否可用的状态 <o:p></o:p>

 

if(node.pid == this.root.id){<o:p></o:p>

        str += node.cname;<o:p></o:p>

    }else{<o:p></o:p>

        /**组装checkbox开始*/<o:p></o:p>

        checkboxSyntax = "<input type='checkbox' desc='" + node.cshow + "' name='" + node.cname + "' id='" + node.cname + "_" + node.id + "' value='" + node.cvalue + "' onClick='javascript: " + this.obj + ".checkNode(" + node.id+","+node.pid+","+node._hc + ",this.checked);' ";<o:p></o:p>

        //是否被选中<o:p></o:p>

        if(node.cchecked)<o:p></o:p>

            checkboxSyntax += " checked ";<o:p></o:p>

        //是否可用<o:p></o:p>

        if(node.cdisabled)<o:p></o:p>

            checkboxSyntax += " disabled ";         <o:p></o:p>

        checkboxSyntax += ">" + node.cshow;<o:p></o:p>

        /**组装checkbox结束*/<o:p></o:p>

                <o:p></o:p>

        str += checkboxSyntax;<o:p></o:p>

    }<o:p></o:p>

3、   增加一些选中的方法 <o:p></o:p>

功能是: <o:p></o:p>

l          选中叶节点时递归选中父节点; <o:p></o:p>

l          选中有子孙的节点时子孙节点递归选中; <o:p></o:p>

l          去掉节点选择时如果兄弟节点没有选中的也去掉直接父节点的选中; <o:p></o:p>

 

//=============================== <o:p></o:p>

// 作用:选中节点对象 <o:p></o:p>

// 参数: nobj node 对象 <o:p></o:p>

//      cobj checkbox 对象 <o:p></o:p>

//=============================== <o:p></o:p>

dTree.prototype.checkNode = function(id,pid,_hc,checked) { <o:p></o:p>

    //1 、递归选父节点对象(无论是叶节点还是中间节点) <o:p></o:p>

    // 判断同级中有无被选中的,如果有选中的就不可以反选 <o:p></o:p>

    if(!this.isHaveBNode(id,pid)){ <o:p></o:p>

        if(checked){ <o:p></o:p>

            // 选中就一直选到根节点 <o:p></o:p>

            this.checkPNodeRecursion(pid,checked); <o:p></o:p>

        }else{ <o:p></o:p>

            // 去掉选中仅将其父节点去掉选中 <o:p></o:p>

            this.checkPNode(pid,checked); <o:p></o:p>

        } <o:p></o:p>

    }   <o:p></o:p>

    <o:p></o:p>

    //2 、如果是中间结点,具有儿子,递归选子节点对象       <o:p></o:p>

    if(_hc)     <o:p></o:p>

        this.checkSNodeRecursion(id,checked); <o:p></o:p>

    <o:p></o:p>

} <o:p></o:p>

<o:p> </o:p>

//=============================== <o:p></o:p>

// 作用:判断同级中有无被选中的 <o:p></o:p>

// 参数: id 节点 id <o:p></o:p>

//      pid 节点的父节点 id <o:p></o:p>

//=============================== <o:p></o:p>

dTree.prototype.isHaveBNode = function(id,pid) {    <o:p></o:p>

    var isChecked = false <o:p></o:p>

    for (var n=0; n<this.aNodes.length; n++) { <o:p></o:p>

        // 不是节点自身、具有同父节点兄弟节点 <o:p></o:p>

        if (this.aNodes[n].pid!=-1&&this.aNodes[n].id!=id&&this.aNodes[n].pid == pid) {          <o:p></o:p>

            if(eval("document.all."+ this.aNodes[n].cname + "_" + this.aNodes[n].id + ".checked")) <o:p></o:p>

                isChecked = true;           <o:p></o:p>

        } <o:p></o:p>

    } <o:p></o:p>

    <o:p></o:p>

    return isChecked; <o:p></o:p>

}; <o:p></o:p>

<o:p> </o:p>

//=============================== <o:p></o:p>

// 作用:递归选中父节点对象 <o:p></o:p>

// 参数: pid 节点的父节点 id <o:p></o:p>

//      ischecked 是否被选中 <o:p></o:p>

//=============================== <o:p></o:p>

dTree.prototype.checkPNodeRecursion = function(pid,ischecked) { <o:p></o:p>

    for (var n=0; n<this.aNodes.length; n++) { <o:p></o:p>

        if (this.aNodes[n].pid!=-1&&this.aNodes[n].id == pid) {         <o:p></o:p>

            eval("document.all."+ this.aNodes[n].cname + "_" + this.aNodes[n].id + ".checked = " + ischecked); <o:p></o:p>

            this.checkPNodeRecursion(this.aNodes[n].pid,ischecked); <o:p></o:p>

            break; <o:p></o:p>

        } <o:p></o:p>

    } <o:p></o:p>

}; <o:p></o:p>

<o:p> </o:p>

//=============================== <o:p></o:p>

// 作用:递归选中子节点对象 <o:p></o:p>

// 参数: id 节点 id <o:p></o:p>

//      ischecked 是否被选中 <o:p></o:p>

//=============================== <o:p></o:p>

dTree.prototype.checkSNodeRecursion = function(id,ischecked) {  <o:p></o:p>

    for (var n=0; n<this.aNodes.length; n++) { <o:p></o:p>

        if (this.aNodes[n].pid!=-1&&this.aNodes[n].pid == id) {         <o:p></o:p>

            eval("document.all."+ this.aNodes[n].cname + "_" + this.aNodes[n].id + ".checked = " + ischecked); <o:p></o:p>

            this.checkSNodeRecursion(this.aNodes[n].id,ischecked);          <o:p></o:p>

        } <o:p></o:p>

    } <o:p></o:p>

}; <o:p></o:p>

分享到:
评论

相关推荐

    jsp新闻发布系统

    &lt;div align="center"&gt;&lt;strong&gt;&lt;font face="华文楷体"&gt;&lt;a href="messagelist.jsp" target="_blank" class="STYLE21"&gt;游客留言板&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td width="56" height="18" bgcolor=...

    HTML中设置各种字体格式的语法.pdf

    size 为 4: &lt;font size="4"&gt;HTML学习 &lt;/font&gt;&lt;br /&gt; size 为 5: &lt;font size="5"&gt;HTML学习 &lt;/font&gt;&lt;br /&gt; size 为 6: &lt;font size="6"&gt;HTML学习 &lt;/font&gt;&lt;br /&gt; size 为 7: &lt;font size="7"&gt;HTML学习 &lt;/font&gt;&lt;br /&gt; ...

    bp网络和小波用与曲线拟合-曲线拟合.rar

    &lt;/B&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;FONT color=red&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;FONT color=red&gt;&lt;U&gt;&lt;B&gt;直接可以运行!&lt;/B&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;FONT color=red&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT...

    html动态字效果

    例如:&lt;FONT face=华文新魏&gt;&lt;FONT color=#ff0000&gt;彩&lt;/FONT&gt;&lt;FONT color=#ff8900&gt;色&lt;/FONT&gt;&lt;FONT color=#92c000&gt;字&lt;/FONT&gt;&lt;FONT color=#00c024&gt;体&lt;/FONT&gt;&lt;FONT color=#00c0da&gt;色&lt;/FONT&gt;&lt;FONT color=#0053ff&gt;彩&lt;/FONT&gt;...

    V系列仿真器集成调试软件

    &lt;/font&gt;&lt;font face="Arial, Helvetica, sans-serif" size="2"&gt; &lt;br&gt;&lt;br&gt; &lt;/font&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt; &lt;b&gt;&lt;font size="2"&gt;如有疑问,请联系我们:&lt;br&gt;&lt;br&gt; &lt;font color="#0000FF" face="Verdana, Arial, Helvetica, ...

    工程训练综合能力大赛——水下机器人管道巡检组自主研发.zip

    &lt;font color=#999AAA &gt;前段时间参加了工程训练综合能力大赛——水下机器人管道巡检组,非常有幸获得了省赛一等奖,实属来之不易。中途也遇到了很多的困难,在赛后稍微做一下总结,也算分享一些经验&lt;/font&gt; &lt;hr ...

    asp.net汽车销售网站

    &lt;FONT COLOR=&lt;%=bgclr4%&gt;&gt;第 &lt;b&gt;&lt;% = CurrentPage %&gt;&lt;/b&gt; &lt;FONT COLOR=&lt;%=bgclr4%&gt;&gt;页 共 &lt;b&gt;&lt;% = n %&gt;&lt;/b&gt; 页 共&nbsp;&lt;b&gt;&lt;% = totalnumber %&gt;&lt;/b&gt;&nbsp;条新闻 每页 &lt;b&gt;&lt;% = maxperpage %&gt;&lt;/b&gt; 条新闻 ...

    ssd1 quiz3答案

    &lt;center&gt;&lt;p&gt;&lt;font size="10px"&gt;&lt;B&gt;Practical Quiz 3&lt;/B&gt;&lt;/font&gt;&lt;/p&gt;&lt;/center&gt; &lt;form color="#FF00FF"&gt; &lt;center&gt;Login Name:&lt;input type="text"&gt;&lt;/center&gt;&lt;br&gt; &lt;center&gt; Password:&lt;input type="password"&gt;...

    无法复制安装文件certugr.asp certugr.asp文件

    &lt;TD ID=TD1 Align=Right&gt;&lt;A Href="/certsrv"&gt;&lt;Font Color=#FFFFFF&gt;&lt;LocID ID=locHomeLink&gt;&lt;Font Face="Arial" Size=-1&gt;&lt;B&gt;Home&lt;/B&gt;&lt;/Font&gt;&lt;/LocID&gt;&lt;/Font&gt;&lt;/A&gt;&lt;/TD&gt; &lt;/TR&gt; &lt;/Table&gt; &lt;P ID=locPageTitle1&gt;&lt;Font ...

    网站设计asp,sql

    &lt;TR&gt;&lt;TD Align=Right ColSpan=7&gt;&lt;font face="宋体"&gt;&lt;Font Color=Red&gt;总价格=&lt;%=Sum%&gt;&lt;/Font&gt;&lt;/font&gt;&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt; &lt;Input Type=Submit Value=" 更改数量 "&gt; &lt;/Form&gt; &lt;hr&gt; &lt;a href=tj.htm&gt; &lt;font size="5"&gt;提交...

    基于少量样本对谷歌deeplabv3plus的迁移学习python源码+项目说明+详细注释.zip

    小样本放置于&lt;font color=#32CD32 size=3&gt; sample &lt;/font&gt;目录中,&lt;font color=#32CD32 size=3&gt; sample &lt;/font&gt;目录下的&lt;font color=#CD0000 size=3&gt; orig &lt;/font&gt;存放原图,&lt;font color=#E066FF size=3&gt; anno &lt;/...

    JSP+Struts+JSTL+EL新闻发布系统jsp

    &lt;td width="594" height="16" valign="top" background="/images/index_13.jpg"&gt;&lt;script language='JavaScript' type='text/JavaScript' src='/Article/js/menu.js'&gt;&lt;/script&gt; &lt;script type='text/javascript' ...

    CSS下拉菜单导航多级下拉

    &lt;a href="#"&gt;我的日志&lt;/a&gt;&lt;br /&gt; &lt;a href="#"&gt;我的相册&lt;/a&gt;&lt;br /&gt; &lt;a href="#"&gt;我的收藏&lt;/a&gt;&lt;br /&gt; &lt;/div&gt; &lt;/li&gt; &lt;li class="menu2" onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2...

    三联打印样式图

    &lt;th align="right" colspan="12" style = "font-size:14px"&gt;&lt;font color="blue"&gt;&lt;span id="mobile"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;发往地址 :&lt;/th&gt; &lt;th align="left" style="font-size:14px...

    asp代码大全

    &lt;form id="form1" name="send" method="post" action="request-p157.asp" &gt; &lt;fieldset&gt; &lt;legend&gt;计算存款本利和&lt;/legend&gt; 请输入本金:&lt;... 本利和为&lt;font color="#FF6600"&gt;&lt;%=total%&gt;&lt;/font&gt;

    showsite.jsp

    &lt;td colspan="3" bgColor="#ffffff"&gt;&lt;%=(String)session.getAttribute("loginSessionKey")%&gt;&lt;font color="#800080" size="6"&gt;&lt;strong&gt;你好!当前留言&lt;/strong&gt;&lt;/font&gt;&lt;font size="6"&gt;&nbsp;&nbsp;&nbsp; &lt;a href=...

    welcome.jsp

    &lt;td colspan="3" bgColor="#ffffff"&gt;&lt;%=(String)session.getAttribute("loginSessionKey")%&gt;&lt;font color="#800080" size="6"&gt;&lt;strong&gt;你好!当前留言&lt;/strong&gt;&lt;/font&gt;&lt;font size="6"&gt;&nbsp;&nbsp;&nbsp; &lt;a href=...

    div+css常用标签

    * 字体大小:&lt;font size=#&gt;文字&lt;/font&gt;,其中 # 可以是 1-7,数字愈大字也愈大。 * 指定字型:&lt;font face="字体名称"&gt;文字&lt;/font&gt;。 * 文字颜色:&lt;font color=#rrggbb&gt;文字&lt;/font&gt;,其中 rr、gg、bb 分别表示红色...

    JAVA面试题

    &lt;input type="text" name="cid" size="16"&gt;&lt;font color="red"&gt;*&lt;/font&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td width="36%" align="center"&gt;教学班号&lt;/td&gt; &lt;td width="54%"&gt;&nbsp;&nbsp;&nbsp;&lt;input type="text" name="clnum" ...

    一个简单的网页设计

    &lt;option&gt;学生&lt;/option&gt;&lt;option&gt;一年&lt;/option&gt;&lt;option&gt;二年&lt;/option&gt;&lt;option&gt;三年&lt;/option&gt;&lt;option&gt;三年到五年&lt;/option&gt;&lt;option&gt;五年到十年&lt;/option&gt;&lt;option&gt;十年以上&lt;/option&gt; &lt;/select&gt; &lt;/div&gt; ...

Global site tag (gtag.js) - Google Analytics