树形菜单(checkbox列表)-- 设置checkbox的选中状态

 设置checkbox的选中状态

一个父节点可以包含0至多个一级子节点

 

ContractedBlock.gif ExpandedBlockStart.gif Code
<script type="text/javascript">

ExpandedBlockStart.gifContractedBlock.gif      
/**//*
      * coding at 2009-03-14 by joe.yang
      
*/



ExpandedBlockStart.gifContractedBlock.gif      
function checkBoxChanged(e) {
          
var el = e.target || event.srcElement;
          
var arrCheckBox = new Array();
          
var index = 0;

ExpandedSubBlockStart.gifContractedSubBlock.gif          
if (el.tagName == "INPUT" && el.type == "checkbox"{

              
var divNode = el.parentNode.parentNode; // div
              var isParent = false;
ExpandedSubBlockStart.gifContractedSubBlock.gif              
if (el.parentNode.getAttribute("flag"== "parent"{
                  isParent 
= true;
                  arrCheckBox[index
++= el;

                  arrCheckBox 
= getCheckBoxGroup(arrCheckBox, divNode, index);

              }

ExpandedSubBlockStart.gifContractedSubBlock.gif              
else {
                  isParent 
= false;
                  index
++;
                  arrCheckBox[index
++= el;

ExpandedSubBlockStart.gifContractedSubBlock.gif                  
while (divNode.previousSibling != null{


                      
var preNode = divNode.previousSibling;
                      
//处理空文本节点
ExpandedSubBlockStart.gifContractedSubBlock.gif
                      while (preNode.nodeType == 3 || (preNode.nodeType == 1 && preNode.tagName != "DIV")) {
                          preNode 
= preNode.previousSibling;
                      }



                      
var slibNode = preNode.getElementsByTagName("input");

                      
if (slibNode.length == 0 ||
ExpandedSubBlockStart.gifContractedSubBlock.gif                        slibNode[
0].type != "checkbox"{
                          
break;
                      }


ExpandedSubBlockStart.gifContractedSubBlock.gif                      
if (slibNode[0].parentNode.getAttribute("flag"== "parent"{
                          arrCheckBox[
0= slibNode[0];
                          
break;
                      }

ExpandedSubBlockStart.gifContractedSubBlock.gif                      
else {
                          arrCheckBox[index
++= slibNode[0];
                      }

                      divNode 
= slibNode[0].parentNode.parentNode;
                  }


                  divNode 
= el.parentNode.parentNode; // div

                  arrCheckBox 
= getCheckBoxGroup(arrCheckBox, divNode, index);

              }


              setCheckBox(arrCheckBox, isParent)

          }



      }


ExpandedBlockStart.gifContractedBlock.gif      
function getCheckBoxGroup(arrCheckBox, divNode, index) {


ExpandedSubBlockStart.gifContractedSubBlock.gif          
while (divNode.nextSibling != null{
          
              
var nexNode = divNode.nextSibling;
              
//处理空文本节点(就算没文字内容,如果有换行,则该文本节点就是回车符)
ExpandedSubBlockStart.gifContractedSubBlock.gif
              while (nexNode.nodeType == 3 || (nexNode.nodeType == 1 && nexNode.tagName != "DIV")) {
                  nexNode 
= nexNode.nextSibling;
              }


              
var slibNode = nexNode.getElementsByTagName("input");

              
if (slibNode.length == 0 || slibNode[0].parentNode.getAttribute("flag"== "parent" ||
ExpandedSubBlockStart.gifContractedSubBlock.gif                        slibNode[
0].type != "checkbox"{
                  
break;
              }


              arrCheckBox[index
++= slibNode[0];
              divNode 
= slibNode[0].parentNode.parentNode;
          }

          
return arrCheckBox;
      }



ExpandedBlockStart.gifContractedBlock.gif      
function setCheckBox(arrays, isParent) {
          
var count = 0;
ExpandedSubBlockStart.gifContractedSubBlock.gif          
for (var i = 1; i < arrays.length; i++{
ExpandedSubBlockStart.gifContractedSubBlock.gif              
if (isParent) {
                  arrays[i].checked 
= arrays[0].checked;
              }

ExpandedSubBlockStart.gifContractedSubBlock.gif              
else {
ExpandedSubBlockStart.gifContractedSubBlock.gif                  
if (arrays[i].checked) {
                      count
++;
                  }

              }


          }


ExpandedSubBlockStart.gifContractedSubBlock.gif          
if (!isParent) {
ExpandedSubBlockStart.gifContractedSubBlock.gif              
if (arrays.length == count + 1{
                  arrays[
0].checked = true;
              }

ExpandedSubBlockStart.gifContractedSubBlock.gif              
else {
                  arrays[
0].checked = false;
              }

          }

      }

  
</script>

 

 

---------

 父节点标记flag="parent"

子节点标记flag="child"

ContractedBlock.gif ExpandedBlockStart.gif Code
<form id="form1" runat="server">
    
<div>
        
<div>
            
<asp:CheckBox ID="CheckBox1" runat="server" Text="CheckBox1" flag="parent" /></div>
        
<div>
            
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            
<asp:CheckBox ID="CheckBox2" runat="server" flag="child" Text="CheckBox2" /></div>
        
<div>
            
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            
<asp:CheckBox ID="CheckBox3" runat="server" flag="child" Text="CheckBox3" /></div>
        
<div>
            
<asp:CheckBox ID="CheckBox4" runat="server" Text="CheckBox4" flag="parent" /></div>
        
<div>
            
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            
<asp:CheckBox ID="CheckBox5" runat="server" Text="CheckBox5" flag="child" /></div>
        
<div>
            
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            
<asp:CheckBox ID="CheckBox6" runat="server" Text="CheckBox6" flag="child" /></div>
        
<div>
            
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            
<asp:CheckBox ID="CheckBox7" runat="server" Text="CheckBox7" flag="child" /></div>
        
<div>
            
<asp:CheckBox ID="CheckBox8" runat="server" Text="CheckBox1" flag="parent" /></div>
        
<div>
            
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            
<asp:CheckBox ID="CheckBox9" runat="server" flag="child" Text="CheckBox2" /></div>
        
<div>
            
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            
<asp:CheckBox ID="CheckBox10" runat="server" flag="child" Text="CheckBox3" /></div>
              
<div>
            
<asp:CheckBox ID="CheckBox11" runat="server" Text="CheckBox1" flag="parent" /></div>
              
<div>
            
<asp:CheckBox ID="CheckBox12" runat="server" Text="CheckBox1" flag="parent" /></div>
              
<div>
            
<asp:CheckBox ID="CheckBox13" runat="server" Text="CheckBox1" flag="parent" /></div>
     
    
</div>
   
    
</form>

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 CheckBox1.Attributes.Add("onclick""checkBoxChanged(event)");
                CheckBox2.Attributes.Add(
"onclick""checkBoxChanged(event)");
                CheckBox3.Attributes.Add(
"onclick""checkBoxChanged(event)");

                CheckBox4.Attributes.Add(
"onclick""checkBoxChanged(event)");
                CheckBox5.Attributes.Add(
"onclick""checkBoxChanged(event)");
                CheckBox6.Attributes.Add(
"onclick""checkBoxChanged(event)");
                CheckBox7.Attributes.Add(
"onclick""checkBoxChanged(event)");
                CheckBox8.Attributes.Add(
"onclick""checkBoxChanged(event)");

                CheckBox9.Attributes.Add(
"onclick""checkBoxChanged(event)");
                CheckBox10.Attributes.Add(
"onclick""checkBoxChanged(event)");

                CheckBox11.Attributes.Add(
"onclick""checkBoxChanged(event)");
                CheckBox12.Attributes.Add(
"onclick""checkBoxChanged(event)");
                CheckBox13.Attributes.Add(
"onclick""checkBoxChanged(event)");

转载于:https://www.cnblogs.com/joe-yang/archive/2009/03/14/1411650.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值