一下就是:
权限树
1function public_GetParentByTagName(element, tagName)
2{
3 var parent = element.parentNode;
4 var upperTagName = tagName.toUpperCase();
5 //如果这个元素还不是想要的tag就继续上溯
6 while (parent && (parent.tagName.toUpperCase() != upperTagName))
7 {
8 parent = parent.parentNode ? parent.parentNode : parent.parentElement;
9 }
10 return parent;
11}
12
13//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
14function setParentChecked(objNode)
15{
16 var objParentDiv = public_GetParentByTagName(objNode,"div");
17 if(objParentDiv==null || objParentDiv == "undefined")
18 {
19 return;
20 }
21 var objID = objParentDiv.getAttribute("ID");
22 objID = objID.substring(0,objID.indexOf("Nodes"));
23 objID = objID+"CheckBox";
24 var objParentCheckBox = document.getElementById(objID);
25 if(objParentCheckBox==null || objParentCheckBox == "undefined")
26 {
27 return;
28 }
29 if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")
30 return;
31 objParentCheckBox.checked = true;
32 setParentChecked(objParentCheckBox);
33}
34
35//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
36function setChildUnChecked(divID)
37{
38 var objchild = divID.children;
39 var count = objchild.length;
40 for(var i=0;i<objchild.length;i++)
41 {
42 var tempObj = objchild[i];
43 if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
44 {
45 tempObj.checked = false;
46 }
47 setChildUnChecked(tempObj);
48 }
49}
50
51//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
52function setChildChecked(divID)
53{
54 var objchild = divID.children;
55 var count = objchild.length;
56 for(var i=0;i<objchild.length;i++)
57 {
58 var tempObj = objchild[i];
59 if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
60 {
61 tempObj.checked = true;
62 }
63 setChildChecked(tempObj);
64 }
65}
66
67//触发事件
68function CheckEvent(evt)
69{
70 evt=evt?evt:(window.event?window.event:null);
71 var objNode = evt.srcElement=="undefine" ? evt.srcElement : evt.target;
72 if(objNode.tagName!="INPUT" || objNode.type!="checkbox")
73 return;
74
75 if(objNode.checked==true)
76 {
77 setParentChecked(objNode);
78 var objID = objNode.getAttribute("ID");
79 var objID = objID.substring(0,objID.indexOf("CheckBox"));
80 var objParentDiv = document.getElementById(objID+"Nodes");
81 if(objParentDiv==null || objParentDiv == "undefined")
82 {
83 return;
84 }
85 setChildChecked(objParentDiv);
86 }
87 else
88 {
89 var objID = objNode.getAttribute("ID");
90 var objID = objID.substring(0,objID.indexOf("CheckBox"));
91 var objParentDiv = document.getElementById(objID+"Nodes");
92 if(objParentDiv==null || objParentDiv == "undefined")
93 {
94 return;
95 }
96 setChildUnChecked(objParentDiv);
97 }
98}
1function public_GetParentByTagName(element, tagName)
2{
3 var parent = element.parentNode;
4 var upperTagName = tagName.toUpperCase();
5 //如果这个元素还不是想要的tag就继续上溯
6 while (parent && (parent.tagName.toUpperCase() != upperTagName))
7 {
8 parent = parent.parentNode ? parent.parentNode : parent.parentElement;
9 }
10 return parent;
11}
12
13//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
14function setParentChecked(objNode)
15{
16 var objParentDiv = public_GetParentByTagName(objNode,"div");
17 if(objParentDiv==null || objParentDiv == "undefined")
18 {
19 return;
20 }
21 var objID = objParentDiv.getAttribute("ID");
22 objID = objID.substring(0,objID.indexOf("Nodes"));
23 objID = objID+"CheckBox";
24 var objParentCheckBox = document.getElementById(objID);
25 if(objParentCheckBox==null || objParentCheckBox == "undefined")
26 {
27 return;
28 }
29 if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")
30 return;
31 objParentCheckBox.checked = true;
32 setParentChecked(objParentCheckBox);
33}
34
35//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
36function setChildUnChecked(divID)
37{
38 var objchild = divID.children;
39 var count = objchild.length;
40 for(var i=0;i<objchild.length;i++)
41 {
42 var tempObj = objchild[i];
43 if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
44 {
45 tempObj.checked = false;
46 }
47 setChildUnChecked(tempObj);
48 }
49}
50
51//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
52function setChildChecked(divID)
53{
54 var objchild = divID.children;
55 var count = objchild.length;
56 for(var i=0;i<objchild.length;i++)
57 {
58 var tempObj = objchild[i];
59 if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
60 {
61 tempObj.checked = true;
62 }
63 setChildChecked(tempObj);
64 }
65}
66
67//触发事件
68function CheckEvent(evt)
69{
70 evt=evt?evt:(window.event?window.event:null);
71 var objNode = evt.srcElement=="undefine" ? evt.srcElement : evt.target;
72 if(objNode.tagName!="INPUT" || objNode.type!="checkbox")
73 return;
74
75 if(objNode.checked==true)
76 {
77 setParentChecked(objNode);
78 var objID = objNode.getAttribute("ID");
79 var objID = objID.substring(0,objID.indexOf("CheckBox"));
80 var objParentDiv = document.getElementById(objID+"Nodes");
81 if(objParentDiv==null || objParentDiv == "undefined")
82 {
83 return;
84 }
85 setChildChecked(objParentDiv);
86 }
87 else
88 {
89 var objID = objNode.getAttribute("ID");
90 var objID = objID.substring(0,objID.indexOf("CheckBox"));
91 var objParentDiv = document.getElementById(objID+"Nodes");
92 if(objParentDiv==null || objParentDiv == "undefined")
93 {
94 return;
95 }
96 setChildUnChecked(objParentDiv);
97 }
98}
笔者主要改了一下第70行代码,可以支持IE,Firefox了。
调用(.cs)
this.TreeView1.Attributes.Add("onclick", "CheckEvent(event);");
仅共个人收藏之用.......