实现CheckBox分级选中的经典代码

开发 后端
本文列出了CheckBox分级选中的代码,代码很复杂,需要大家仔细研究一番,不过您若是明白了这部分代码,那实现CheckBox分级选中绝不是问题。

本文列出了CheckBox分级选中的代码,代码很复杂,需要大家仔细研究一番,不过您若是明白了这部分代码,那实现CheckBox分级选中绝不是问题。 

CheckBox分级选中的实现方法如下:

  1.  
  2.  
  3. "Content-Language" content="zh-cn">  
  4. "Content-Type" content="text/html; charset=gb2312">  
  5. "GENERATOR" content="Microsoft FrontPage 4.0">  
  6. "ProgId" content="FrontPage.Editor.Document">  
  7. CheckBox  
  8.  
  9. var n=document.getElementsByTagName("INPUT");  
  10. var CheckBoxNum=n.length;  
  11. var tf,SearchNodeName,SearchParentNodeName,SameNodeNum,
    SubNodeCheckedNum,SameNodeCheckedNum,SubNodeNum,SubNodeCheckedTF;   
  12. function FindParentNode(SubNodeName)    //获取上级结点名,并判断是否被选中  
  13. {  
  14.   tf=false;                //初始化选中状态  
  15.   SearchNodeName=SubNodeName;  
  16.   t=SubNodeName.lastIndexOf("_");    //判断是否存在上级结点  
  17.   if(t!=-1)SearchNodeName=SubNodeName.substring(0,t);//如果存在上级结点,取得上级结点名  
  18.   if(document.all(SubNodeName).checked)tf=true;//判断结点是否被选中  
  19.   return SearchNodeName;  
  20. }   
  21. function CheckSubNode(NodeName)    //获取结点名,并判断子结点是否选中  
  22. {  
  23.   SubNodeCheckedTF=false;    //初始化子结点选中状态  
  24.   SubNodeNum=0;            //初始化子结点数目  
  25.   SameNodeNum=0;        //初始化同级结点数目  
  26.   SubNodeCheckedNum=0;        //初始化子结点被选中的数目  
  27.   SameNodeCheckedNum=0;        //初始化同级结点被选中的数目  
  28.   ParentNodeName=FindParentNode(NodeName);//上级结点名  
  29.   SearchParentNodeName=NodeName;//当前结点名  
  30.   d=NodeName.lastIndexOf("_");    //判断是否存在上级结点  
  31.   if(d!=-1)SearchParentNodeName=SearchParentNodeName.substring(0,d);//如果存在上级结点,取得上级结点名  
  32.   for(i=0;i
  33.   {  
  34.     if(n[i].name.length==NodeName.length&&ParentNodeName==FindParentNode(n[i].name)) 字串3   
  35.     {  
  36.       SameNodeNum+=1;        //同级结点数目加一  
  37.       if(n[i].checked)SameNodeCheckedNum+=1;//同级结点被选中的数目加一  
  38.     }   
  39. if(n[i].name.substring(0,NodeName.length)==NodeName&&n[i].name!=NodeName&&n[i].type=="checkbox")  
  40.     {  
  41.       SubNodeNum+=1;        //子结点数数目加一  
  42.       if(n[i].checked)SubNodeCheckedNum+=1;//子结点被选中的数目加一  
  43.     }  
  44.   }   
  45.  if((SameNodeNum==1||SameNodeCheckedNum==0)&&(SubNodeCheckedNum==0)&&!document.all(NodeName).checked)  
  46.   {  
  47.       SubNodeCheckedTF=true;    //判断子结点是否被选中  
  48.   }  
  49.   return SearchParentNodeName;  
  50. }   
  51. function CheckAll(BoxName)  
  52. {  
  53.   SearchNodeName=BoxName;  
  54.   SearchParentNodeName=BoxName  
  55.   SubNodeLength=BoxName.split("_").length;   
  56.   for(i=0;i
  57.   {  
  58.     if(n[i].name.substring(0,BoxName.length)==BoxName&&n[i].name!=BoxName&&n[i].type=="checkbox")  
  59.     n[i].checked=document.all(BoxName).checked?true:false;    //选中所有子结点  
  60.   }   
  61.   for(j=1;j
  62.   {  
  63.     document.all(FindParentNode(SearchNodeName)).checked=tf?true:false;  
  64.     document.all(CheckSubNode(SearchParentNodeName)).checked=SubNodeCheckedTF?false:true;  
  65.   }   
  66. }document.onclick=function(){if(event.srcElement.type=="checkbox")CheckAll(event.srcElement.name);}  
  67.  
  68.  
  69.  
  70. "f1" >  
  71. "checkbox" name="bid">
     
  72.  "checkbox" name="bid_01">
     
  73.   "checkbox" name="bid_01_01">
     
  74.   "checkbox" name="bid_01_02">
     
  75.    "checkbox" name="bid_01_02_01">
     
  76.    "checkbox" name="bid_01_02_02">
     
  77.     "checkbox" name="bid_01_02_02_01">
     
  78.     "checkbox" name="bid_01_02_02_02">
     
  79.     "checkbox" name="bid_01_02_02_03">
     
  80.      "checkbox" name="bid_01_02_02_03_01">
     
  81.      "checkbox" name="bid_01_02_02_03_02">
     
  82.      "checkbox" name="bid_01_02_02_03_03">
     
  83.     "checkbox" name="bid_01_02_02_04">
     
  84.    "checkbox" name="bid_01_02_03">
       
    "checkbox" name="bid_01_03">
     
  85.   "checkbox" name="bid_01_04">
     
  86.  "checkbox" name="bid_02">
     
  87.  "checkbox" name="bid_03">
     
  88.  "checkbox" name="bid_04">
     

  89.  
  90. "checkbox" name="ent" checkmain >
     
  91.  "checkbox" name="ent_01">
     
  92.   "checkbox" name="ent_01_01">
     
  93.  "checkbox" name="ent_02">
     
  94.  "checkbox" name="ent_03">
     
  95.  "checkbox" name="ent_04">
     
  96.  

以上就是实现CheckBox分级选中的方法,希望能给大家带来帮助。

【编辑推荐】

  1. 简单实现C# CheckBox单选的相关功能
  2. Java与C#事件处理详细对比
  3. C#和Java详细描述
  4. 追赶C#风潮碰上的几个问题
  5. 解析C# Socket编程实现访问网络的原理
责任编辑:阡陌 来源: 网络转载
相关推荐

2009-09-08 14:21:38

CheckBox翻页选

2009-09-08 13:52:54

CheckBox选中

2009-09-09 10:32:12

C# CheckBox

2011-05-20 13:31:54

Repeatercheckbox

2009-09-10 15:54:27

无限分级类

2012-02-02 16:39:40

CheckBox控件源代码

2019-03-12 11:11:25

开源Leveldb存储

2011-04-11 14:14:29

checkboxlistviewAndroid

2009-09-08 09:31:54

c# CheckBox

2021-08-30 11:53:36

机器学习人工智能计算机

2011-12-15 10:10:33

Javanio

2022-08-08 07:05:36

KubeSphere分级管理

2011-06-27 12:51:36

百卓网络上网行为管理流量控制

2010-11-19 12:26:08

2019-08-28 11:08:51

排序算法Java

2024-08-26 14:57:36

2010-03-18 10:25:30

Java notify

2010-09-26 17:09:05

SQL语句

2010-03-19 15:02:50

Java Socket

2012-04-13 09:42:34

点赞
收藏

51CTO技术栈公众号