求一简明的js遍历TreeView选中节点代码,带有checkbox的treeview,请给出代码,帖子分只给一人.

解决方案 »

  1.   

        <script language="javascript" type="text/javascript">
        function show(){
            var str = "";
            var objs = document.getElementById("s").getElementsByTagName("input");
            for(var i = 0; i < objs.length; i++){
                if(objs[i].type=="checkbox" && objs[i].checked){
                    str += objs[i].id + "\n\n";
                }
            }
            alert(str);
        }
        </script>
    <form id="d" runat="server">
    <asp:TreeView ID="s" runat="server" ShowCheckBoxes="all">
    <Nodes>
        <asp:TreeNode Text="1" Value="1">
                <asp:TreeNode Text="1-1" Value="1-1"></asp:TreeNode>
                <asp:TreeNode Text="1-2" Value="1-2"></asp:TreeNode>
        </asp:TreeNode>
        <asp:TreeNode Text="2" Value="2"></asp:TreeNode>
    </Nodes>
    </asp:TreeView>
    <input type="button" value="check" onclick="show();" />
    </form>
      

  2.   

    http://topic.csdn.net/u/20080228/16/0fbebe80-b45d-4a76-8eae-bfb1038e9321.html
      

  3.   


        
      //递归遍历所有子节点   
      function   CheckNode(currentNode)   
      {   
      var   childNode=new   Array();   
      var   parentNodeChild=new   Array();   
      var   isChecked;   
      childNode=currentNode.getChildren();   
      if(currentNode.getAttribute('checked'))   
      {   
      isChecked=true;   
      }   
      else   
      {   
      isChecked=false;   
      }   
      //父节点处理   
      if(currentNode.getParent()!=null)   
      {   
      //选中处理   
      if(currentNode.getAttribute('Checked'))   
      {   
      ParentNode(currentNode);   
      }   
      else   
      //取消选中   
      {   
      ChildNode(currentNode);   
      }   
      }   
      else   
      {   
      //什么也不做   
      }   
      //子节点处理   
      if(childNode.length>0)   
      {   
      for(var   i=0;i<childNode.length;i++)   
      {   
      childNode.setAttribute("Checked",isChecked);   
      if(childNode.getChildren().length>0)   
      {   
      CheckNode(childNode);   
      }   
      }   
      }   
        
      }   
      //递归选中父节点   
      function   ParentNode(currentNode)   
      {   
      if(currentNode.getParent()!=null)   
      {   
      currentNode.getParent().setAttribute('Checked',true);   
      //递归调用ParentNode(currentNode)以遍历更上一层的父节点   
      ParentNode(currentNode.getParent());   
      }   
      }   
      //递归取消选中父节点   
      function   ChildNode(currentNode)   
      {   
      if(currentNode.getParent()!=null)   
      {   
      var   checkedCount=0;   
      var   childNode=currentNode.getParent().getChildren();   
      for   (var   i=0;i<childNode.length;i++)   
      {   
      if(childNode.getAttribute('Checked'))   
      {   
      checkedCount++;   
      }   
      }   
      if(checkedCount==0)   
      {   
      currentNode.getParent().setAttribute('Checked',false);   
      }   
      //递归调用ChildNode(currentNode)以遍历更上一层的父节点   
      ChildNode(currentNode.getParent());   
      }   
      }   
        
      </script>
    js递归遍历treeview中某节点的所有子节点的问题
     var   AllRootNode=new   Array();   
        AllRootNode=TreeView1.getChildren();   
        AlertNode(AllRootNode);         
        
        function   AlertNode(NodeArray)   
        {   
          if(parseInt(NodeArray.length)==0)   
            return;   
          else   
          {   
            for(i=0;i<NodeArray.length;i++)   
            {   
              var   cNode;   
              cNode=NodeArray;   
              alert(cNode.getAttribute("Text"));   
              if(parseInt(cNode.getChildren().length)!=0)   
                AlertNode(cNode.getChildren());           
            }   
          }   
        }