function checkNode(node) { //Ext.Msg.alert('提示',node.getUI().isChecked() ); uncheckParentNode(node); checkChildNodes(node, node.getUI().isChecked()); } function checkChildNodes(node, checked) { var nodeArray = node.childNodes; for (var i = 0; i < nodeArray.length; i++) { nodeArray[i].getUI().checkbox.checked = checked; if (nodeArray[i].hasChildNodes()) checkChildNodes(nodeArray[i], checked); } } function uncheckParentNode(node) { // todo unselected all children if (node.parentNode != undefined) { var checked = getcheckcount(node) != ""; //递归中返回不了0,不知为什么 if (node.parentNode.getUI().checkbox != undefined) { node.parentNode.getUI().checkbox.checked = checked; } uncheckParentNode(node.parentNode); } } function getcheckcount(node) { var count = 0; var nodeArray = node.parentNode.childNodes; for (var i = 0; i < nodeArray.length; i++) { if (nodeArray[i].getUI().isChecked()) { count++; } } return count; } //获取选中节点 function getCheckedNode(node) { var result = ""; //判断根节点是否选中 if (node.getUI().checkbox.checked) { if (node.id != "root") { result += node.id + ","; } } var treeNodes = node.childNodes; //遍历根节点下的所有子节点 for (var i = 0; i < treeNodes.length; i++) { if (treeNodes[i].getUI().checkbox.checked) { result += treeNodes[i].id + ","; if (treeNodes[i].childNodes.length > 0) { var tmp = getCheckedNode(treeNodes[i]); result = tmp; } } } return result; }