无刷新联动树控件treeview
<script language="javascript" type="text/javascript"> //无刷新 function HandleCheckbox() { var element = event.srcElement; if (element.tagName == "INPUT" && element.type == "checkbox") { var checkedState = element.checked; while (element.tagName != "TABLE") // Get wrapping table { element = element.parentElement; } var parentElement = element; if (checkedState) { CheckParents(element); } element = element.nextSibling; //element.tagName = DIV if (element != null) // If no childrens then exit { var childTables = element.getElementsByTagName("TABLE"); for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++) { CheckTable(childTables[tableIndex], checkedState); } } if (checkedState == false) { UnCheckParents(parentElement); } } } // Uncheck the parents of the given table, Can remove the recurse (redundant) function CheckParents(table) { if (table == null || table.rows[0].cells.length == 2) // This is the root { return; } var parentTable = table.parentElement.previousSibling; CheckTable(parentTable, true); CheckParents(parentTable); } // Check the parents of the given table, Can remove the recurse (redundant) function UnCheckParents(table) { if (table == null || table.rows[0].cells.length == 2) // This is the root { return; } var parentTable = table.parentElement.previousSibling; var checkedCount = GetCheckedCount(table.parentElement); if (checkedCount == 0) { CheckTable(parentTable, false); } UnCheckParents(parentTable); } // Handle the set of checkbox checked state function CheckTable(table, checked) { var checkboxIndex = table.rows[0].cells.length - 1; var cell = table.rows[0].cells[checkboxIndex]; var checkboxes = cell.getElementsByTagName("INPUT"); if (checkboxes.length == 1) { checkboxes[0].checked = checked; } } //Get checked children count function GetCheckedCount(table) { var checkedCount = 0; var element = table.nextSibling; var childTable = table.getElementsByTagName("TABLE"); for (var tableIndex = 0; tableIndex < childTable.length; tableIndex++) { var childTables = childTable[tableIndex]; var checkboxIndex = childTables.rows[0].cells.length - 1; var cell = childTables.rows[0].cells[checkboxIndex]; var checkboxes = cell.getElementsByTagName("INPUT"); if (checkboxes.length == 1 && checkboxes[0].checked == true) { checkedCount++; } } return checkedCount; } </script>