function OnTreeNodeChecked() { var ele = event.srcElement;//获得事件的所有属性 if (ele.type == 'checkbox') //判断事件的type是否是checkbox { var childrenDivID = ele.id.replace('CheckBox', 'Nodes');//事件的id中checkbox用nodes代替 var div = document.getElementById(childrenDivID); if (div != null) //判断是否有子集 { var checkBoxs = div.getElementsByTagName('INPUT');//获得所有的子集 for (var i = 0; i < checkBoxs.length; i++) { if (checkBoxs[i].type == 'checkbox')//判断其type是否为checkbox { checkBoxs[i].checked = ele.checked;//将子集的checkbox状态设定为何父级的checkbox的状态一致 } } } OnTreeNodeChildChecked(ele); } } function OnTreeNodeChildChecked(ele) { //自动处理上级 try { var parentDiv = ele.parentElement.parentElement.parentElement.parentElement.parentElement;//获得其id var parentChkBox = document.getElementById(parentDiv.id.replace('Nodes', 'CheckBox')); if (parentChkBox != null) //和上面那句判断是否有父级 { var ChildsChkAll = true;//设置一个变量 为true var Boxs = parentDiv.getElementsByTagName('INPUT'); var m = 0; var n = 0; for (var i = 0; i < Boxs.length; i++) { if (Boxs[i].type == 'checkbox') { m++; } if (Boxs[i].type == 'checkbox' && Boxs[i].checked == false) { n++ } } if (m == n)//判断同级中是否都未选中 { ChildsChkAll = false; } parentChkBox.checked = ChildsChkAll; //父级的选中状态为ChildsChkAll OnTreeNodeChildChecked(parentChkBox); } } catch (e) { } }