var length = document.form1.elements.length;
function selecta(id,checkbox,parent_id){
parent = "checkbox" + parent_id;
id = id + "checkbox";
if(checkbox.checked == true){
for(var i = 0;i < length;i++){
var ele = document.form1.elements[i];
if(ele.name.indexOf(parent) >= 0){
ele.checked = true;
ele.disabled = false;
}
if(ele.name.indexOf(id) >= 0){
ele.checked = true;
ele.disabled = false;
}
}
}
}out.print("<input name='"+rsTreeMap.get("rs_id")+"checkbox"+rsTreeMap.get("parent_rs_id")+"' type='checkbox' onClick=function(){selecta("+rsTreeMap.get("rs_id").toString()+",this,"+rsTreeMap.get("parent_rs_id").toString()+")} value='"+rsTreeMap.get("rs_id")+"'> ");

解决方案 »

  1.   

    上面的代码选择某个复选框后没有任何反映
    out.print("<input name=id+checkbox+parent_id type=checkbox onClick=function(){selecta(id,this,parent_id)} value=id");
      

  2.   

    <form METHOD=POST ACTION="" name="form1" id="form1" onSubmit="">
    <%
       for(int i = 0;i < num;i++){
          out.print("<input name=get.id(i)+checkbox+get.parent_id(i)type=checkbox       value=get.name(i)" onclick=function(){selecta(get.id(i),this,get.parent_id(i))});
       }
    %>var length = document.form1.elements.length;
    function selecta(id,checkbox,parent_id){
    parent = "checkbox" + parent_id;
    id = id + "checkbox";
    if(checkbox.checked == true){
    for(var i = 0;i < length;i++){
    var ele = document.form1.elements[i];
    if(ele.name.indexOf(parent) >= 0){
    ele.checked = true;
    ele.disabled = false;
    }
    if(ele.name.indexOf(id) >= 0){
    ele.checked = true;
    ele.disabled = false;
    }
    }
    }
    }
      

  3.   

    <HTML>   
      <HEAD>   
      <TITLE>   emu's   test   of   simple   tree</TITLE>   
      <SCRIPT   LANGUAGE="JavaScript">   
      <!--   
      function   checkSelect(){   
      var   elm   =   event.srcElement.parentNode;   
      checkChildrenRecurve(elm);   
      checkRootRecurve(document.getElementById("root"));   
      }   
      function   checkChildrenRecurve(elm){   
      var   li   =   elm.parentNode;   
      var   ul   =   li.lastChild;   
      if   (ul.tagName   !=   "UL")   return;   
      var   lis   =   ul.children;   
      for   (var   i=0;i<lis.length;i++){   
      lis[i].firstChild.firstChild.checked=elm.firstChild.checked;   
      checkChildrenRecurve(lis[i].firstChild)   
      }   
      }   
      function   checkRootRecurve(ul){   
      if   (ul.tagName   !=   "UL")   {   
      ul.parentNode.firstChild.firstChild.allChecked   =   ul.parentNode.firstChild.firstChild.checked;   
      ul.parentNode.firstChild.firstChild.allUnChecked   =   !ul.parentNode.firstChild.firstChild.checked;   
      return;   
      }   
      var   lis   =   ul.children;   
      var   allChecked   =   true;   
      var   allUnChecked   =   true;   
      for   (var   i=0;i<lis.length;i++){   
      checkRootRecurve(lis[i].lastChild);   
      allChecked   =   allChecked   &&   lis[i].firstChild.firstChild.checked   &&   lis[i].firstChild.firstChild.allChecked;   
      allUnChecked   =   allUnChecked   &&   !lis[i].firstChild.firstChild.checked   &&   lis[i].firstChild.firstChild.allUnChecked;   
      }   
      ul.parentNode.firstChild.firstChild.allChecked=allChecked;   
      ul.parentNode.firstChild.firstChild.allUnChecked=allUnChecked;   
      if   (allChecked   ||   allUnChecked){   
      ul.parentNode.firstChild.firstChild.checked=allChecked;   
      ul.parentNode.firstChild.firstChild.disabled=false;   
      ul.parentNode.firstChild.childStatus=false;   
      }else{   
      ul.parentNode.firstChild.firstChild.disabled=true;   
      ul.parentNode.firstChild.childStatus=true;   
      ul.parentNode.firstChild.firstChild.checked=true;   
        
      }   
      }   
        
      function   enableFirstChild(){   
      this.childStatus   =   this.firstChild.disabled;   
      this.firstChild.disabled=false;   
      }   
      function   recoverFirstChild(){   
      this.firstChild.disabled   = this.childStatus;   
      }   
      function   init(){   
      var   elms   =   document.getElementsByTagName("INPUT");   
      for   (var   i=0;i<elms.length;i++)   
      elms[i].onclick=checkSelect;   
      var   elms   =   document.getElementsByTagName("SPAN");   
      for   (var   i=0;i<elms.length;i++){   
      elms[i].onmouseover=enableFirstChild;   
      elms[i].onmouseout=recoverFirstChild;   
      }   
      }   
        
      //-->   
      </SCRIPT>   
      </HEAD>   
        
      <BODY   onload="init()">   
      <div>   
      <span><input   type=checkbox></span>   
      <UL   id=root>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <LI><span><input   type=checkbox></span>   
      </UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <LI><span><input   type=checkbox></span>   
      </UL>   
      </UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <LI><span><input   type=checkbox></span>   
      </UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <LI><span><input   type=checkbox></span>   
      </UL>   
      </UL>   
      </UL>   
      </div>   
      </BODY>   
      </HTML>   
      

  4.   

    请参考 http://topic.csdn.net/t/20030220/13/1447234.html
      

  5.   

    用IE的一个特性 indeterminate 可以省点事:
    <HTML>   
      <HEAD>   
      <TITLE>   emu's   test   of   simple   tree</TITLE>   
      <SCRIPT   LANGUAGE="JavaScript">   
      <!--   
      function   checkSelect(){   
      var   elm   =   event.srcElement.parentNode;   
      checkChildrenRecurve(elm);   
      checkRootRecurve(document.getElementById("root"));   
      }   
      function   checkChildrenRecurve(elm){   
      var   li   =   elm.parentNode;   
      var   ul   =   li.lastChild;   
      if   (ul.tagName   !=   "UL")   return;   
      var   lis   =   ul.children;   
      for   (var   i=0;i<lis.length;i++){   
      lis[i].firstChild.firstChild.checked=elm.firstChild.checked;   
      checkChildrenRecurve(lis[i].firstChild)   
      }   
      }   
      function   checkRootRecurve(ul){   
      if   (ul.tagName   !=   "UL")   {   
      ul.parentNode.firstChild.firstChild.allChecked   =   ul.parentNode.firstChild.firstChild.checked;   
      ul.parentNode.firstChild.firstChild.allUnChecked   =   !ul.parentNode.firstChild.firstChild.checked;   
      return;   
      }   
      var   lis   =   ul.children;   
      var   allChecked   =   true;   
      var   allUnChecked   =   true;   
      for   (var   i=0;i<lis.length;i++){   
      checkRootRecurve(lis[i].lastChild);   
      allChecked   =   allChecked   &&   lis[i].firstChild.firstChild.checked   &&   lis[i].firstChild.firstChild.allChecked;   
      allUnChecked   =   allUnChecked   &&   !lis[i].firstChild.firstChild.checked   &&   lis[i].firstChild.firstChild.allUnChecked;   
      }   
      ul.parentNode.firstChild.firstChild.allChecked=allChecked;   
      ul.parentNode.firstChild.firstChild.allUnChecked=allUnChecked;   
      if   (allChecked   ||   allUnChecked){   
      ul.parentNode.firstChild.firstChild.checked=allChecked;   
      ul.parentNode.firstChild.firstChild.indeterminate=false;   
      ul.parentNode.firstChild.childStatus=false;   
      }else{   
      ul.parentNode.firstChild.firstChild.indeterminate=true;   
      ul.parentNode.firstChild.childStatus=true;   
      ul.parentNode.firstChild.firstChild.checked=true;   
        
      }   
      }   
        
      function   init(){   
      var   elms   =   document.getElementsByTagName("INPUT");   
      for   (var   i=0;i<elms.length;i++)   
      elms[i].onclick=checkSelect;   
      var   elms   =   document.getElementsByTagName("SPAN");   
      }   
        
      //-->   
      </SCRIPT>   
      </HEAD>   
        
      <BODY   onload="init()">   
      <div>   
      <span><input   type=checkbox></span>   
      <UL   id=root>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <LI><span><input   type=checkbox></span>   
      </UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <LI><span><input   type=checkbox></span>   
      </UL>   
      </UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <LI><span><input   type=checkbox></span>   
      </UL>   
      <LI><span><input   type=checkbox></span>   
      <UL>   
      <LI><span><input   type=checkbox></span>   
      <LI><span><input   type=checkbox></span>   
      </UL>   
      </UL>   
      </UL>   
      </div>   
      </BODY>   
      </HTML>