<html> <head> <meta http-equiv="Content-Language" content="zh-cn"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>CheckBox</title> <script language=javascript defer> var n=document.getElementsByTagName("INPUT"); var CheckBoxNum=n.length; var tf,SearchNodeName,SearchParentNodeName,SameNodeNum,SubNodeCheckedNum,SameNodeCheckedNum,SubNodeNum,SubNodeCheckedTF;function FindParentNode(SubNodeName) //獲取上級結(jié)點(diǎn)名,并判斷是否被選中 { tf=false; //初始化選中狀態(tài) SearchNodeName=SubNodeName; t=SubNodeName.lastIndexOf("_"); //判斷是否存在上級結(jié)點(diǎn) if(t!=-1)SearchNodeName=SubNodeName.substring(0,t);//如果存在上級結(jié)點(diǎn),取得上級結(jié)點(diǎn)名 if(document.all(SubNodeName).checked)tf=true;//判斷結(jié)點(diǎn)是否被選中 return SearchNodeName; } function CheckSubNode(NodeName) //獲取結(jié)點(diǎn)名,并判斷子結(jié)點(diǎn)是否選中 { SubNodeCheckedTF=false; //初始化子結(jié)點(diǎn)選中狀態(tài) SubNodeNum=0; //初始化子結(jié)點(diǎn)數(shù)目 SameNodeNum=0; //初始化同級結(jié)點(diǎn)數(shù)目 SubNodeCheckedNum=0; //初始化子結(jié)點(diǎn)被選中的數(shù)目 SameNodeCheckedNum=0; //初始化同級結(jié)點(diǎn)被選中的數(shù)目 ParentNodeName=FindParentNode(NodeName);//上級結(jié)點(diǎn)名 SearchParentNodeName=NodeName;//當(dāng)前結(jié)點(diǎn)名 d=NodeName.lastIndexOf("_"); //判斷是否存在上級結(jié)點(diǎn) if(d!=-1)SearchParentNodeName=SearchParentNodeName.substring(0,d);//如果存在上級結(jié)點(diǎn),取得上級結(jié)點(diǎn)名 for(i=0;i<CheckBoxNum;i++) { if(n[i].name.length==NodeName.length&&ParentNodeName==FindParentNode(n[i].name)) { SameNodeNum+=1; //同級結(jié)點(diǎn)數(shù)目加一 if(n[i].checked)SameNodeCheckedNum+=1;//同級結(jié)點(diǎn)被選中的數(shù)目加一 } if(n[i].name.substring(0,NodeName.length)==NodeName&&n[i].name!=NodeName&&n[i].type=="checkbox") { SubNodeNum+=1; //子結(jié)點(diǎn)數(shù)數(shù)目加一 if(n[i].checked)SubNodeCheckedNum+=1;//子結(jié)點(diǎn)被選中的數(shù)目加一 } } if((SameNodeNum==1 SameNodeCheckedNum==0)&&(SubNodeCheckedNum==0)&&!document.all(NodeName).checked) { SubNodeCheckedTF=true; //判斷子結(jié)點(diǎn)是否被選中 } return SearchParentNodeName; } function CheckAll(BoxName) { SearchNodeName=BoxName; SearchParentNodeName=BoxName SubNodeLength=BoxName.split("_").length; for(i=0;i<CheckBoxNum;i++) { if(n[i].name.substring(0,BoxName.length)==BoxName&&n[i].name!=BoxName&&n[i].type=="checkbox") n[i].checked=document.all(BoxName).checked?true:false; //選中所有子結(jié)點(diǎn) } for(j=1;j<SubNodeLength;j++) { document.all(FindParentNode(SearchNodeName)).checked=tf?true:false; document.all(CheckSubNode(SearchParentNodeName)).checked=SubNodeCheckedTF?false:true; } } document.onclick=function(){if(event.srcElement.type=="checkbox")CheckAll(event.srcElement.name);} </script> </head><body > <form name="f1" > <input type="checkbox" name="bid"><br> <input type="checkbox" name="bid_01"><br> <input type="checkbox" name="bid_01_01"><br> <input type="checkbox" name="bid_01_02"><br> <input type="checkbox" name="bid_01_02_01"><br> <input type="checkbox" name="bid_01_02_02"><br> <input type="checkbox" name="bid_01_02_02_01"><br> <input type="checkbox" name="bid_01_02_02_02"><br> <input type="checkbox" name="bid_01_02_02_03"><br> <input type="checkbox" name="bid_01_02_02_03_01"><br> <input type="checkbox" name="bid_01_02_02_03_02"><br> <input type="checkbox" name="bid_01_02_02_03_03"><br> <input type="checkbox" name="bid_01_02_02_04"><br> <input type="checkbox" name="bid_01_02_03"><br> <input type="checkbox" name="bid_01_03"><br> <input type="checkbox" name="bid_01_04"><br> <input type="checkbox" name="bid_02"><br> <input type="checkbox" name="bid_03"><br> <input type="checkbox" name="bid_04"><br> <hr> <input type="checkbox" name="ent" checkmain ><br> <input type="checkbox" name="ent_01"><br> <input type="checkbox" name="ent_01_01"><br> <input type="checkbox" name="ent_02"><br> <input type="checkbox" name="ent_03"><br> <input type="checkbox" name="ent_04"><br> </form>
|