Asp.net 2.0 TreeView:客户端子、父节点的操作????? function OnTreeNodeChecked()
????? { ???????? //获取事件对象 ???????? var obj = window.event.srcElement; ???????? //事件节点是否被找到 ???????? var treeNodeFound = false; ???????? //check状态 ???????? var checkedState; ????????? ???????? //如果当前事件对象是checkbox ???????? if (obj.tagName == "INPUT" && obj.type == "checkbox") ???????? { ??????????? var treeNode = obj; ??????????? //获取当前checkbox的check状态 ??????????? checkedState = treeNode.checked; ???????????? ??????????? //获取当前节点所在的table ??????????? do ??????????? { ?????????????? obj = obj.parentElement; ??????????? } ??????????? while (obj.tagName != "TABLE") ???????????? ??????????? //获取事件节点的深度 ??????????? var parentTreeLevel = obj.rows[0].cells.length; ??????????? //获取树中所有节点 ??????????? var tables = obj.parentElement.getElementsByTagName("TABLE"); ??????????? //所有节点数 ??????????? var numTables = tables.length; ??????????? //如果这棵树含有多个节点 ??????????? if (numTables >= 1) ??????????? { ?????????????? //遍历树中的所有节点 ?????????????? for (i=0; i < numTables; i++) ?????????????? { ????????????????? //比较是否为事件节点 ????????????????? if (tables[i] == obj) ????????????????? { ???????????????????? //如果是,则已经找到 ???????????????????? treeNodeFound = true; ???????????????????? //跳过(不是跳出遍历,到下面***处其实已转到下一个节点) ???????????????????? i++;??????? //这个地方可以换成continue;下面的判断可以去掉 ???????????????????? //判断是否超过{zh1}一个节点 ???????????????????? if (i == numTables) ???????????????????? { ??????????????????????? return; ???????????????????? } ????????????????? } ????????????????? if (treeNodeFound == true) ????????????????? { ???????????????????? //获取当前节点的深度 ???????????????????? var childTreeLevel = tables[i].rows[0].cells.length; ????????????????????? ???????????????????? //*** ???????????????????? //和事件节点比较深度 ???????????????????? if (childTreeLevel > parentTreeLevel) ???????????????????? { ??????????????????????? var cell = tables[i].rows[0].cells[childTreeLevel - 1]; ??????????????????????? var inputs = cell.getElementsByTagName("INPUT"); ??????????????????????? inputs[0].checked = checkedState; ???????????????????? } ???????????????????? else ???????????????????? { ??????????????????????? //如果当前节点深度<=事件节点深度, 也就是遍历到了事件节点的兄弟或父节点,则跳出 ??????????????????????? return; ???????????????????? } ????????????????? } ?????????????? } ??????????? } ???????? } ????? } ? |