<input type="checkbox" onpropertychange="checkChild('a',this.checked)">
  <input type="checkbox" name="a">
  <input type="checkbox" name="a">
<script>
function checkChild(name,chk){
  var list = document.getElementsByName(name);
  for(var i=0;i<list.length;i++)
    list[i].checked = chk;
}
</script>

解决方案 »

  1.   

    <input type="checkbox" id="a0" onclick="checkChild('a',this)">
      <input type="checkbox" name="a" onclick="checkParent('a0',this)">
      <input type="checkbox" name="a" onclick="checkParent('a0',this)">
    <script>
    function checkChild(name,obj){
      var list = document.getElementsByName(name);
      for(var i=0;i<list.length;i++)
        list[i].checked = obj.checked;
    }
    function checkParent(id,obj){
      var obj0=document.getElementById(id);
      if(!obj.checked){
        obj0.checked=false;
        return;
      }
      var list = document.getElementsByName(obj.name);
      for(var i=0;i<list.length;i++)
        if(!list[i].checked)return;
      obj0.checked=true;
    }
    </script>效率不高,见谅,数据少可以支持
    也可以把一组(包括大类)都取同一名称,用下标来区分
      

  2.   

    挺厉害的,多谢了,如果能都将小行业代码都用统一的Name就好了
      

  3.   

    <script language="JavaScript">
    <!--
    function chkClk(obj){
    var chks=document.getElementsByName(obj.name);
    //alert(chks.length);
    if(obj.flag=="main"){
    for(var i=1;i<chks.length;i++)
    chks[i].checked=obj.checked;
    }
    else{
    for(var i=1;i<chks.length;i++)
    if(chks[i].checked==false){
    chks[0].checked=false;
    break;
    }
    else{
    if(i==chks.length-1) chks[0].checked=true;
    }
    }
    }
    //-->
    </script><input type="checkbox" onclick="chkClk(this)" name="type1" flag="main">typetext
    <li><input type="checkbox" onclick="chkClk(this)" name="type1">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type1">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type1">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type1">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type1">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type1">typetext</li>
    <br><br>
    <input type="checkbox" onclick="chkClk(this)" name="type2" flag="main">typetext
    <li><input type="checkbox" onclick="chkClk(this)" name="type2">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type2">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type2">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type2">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type2">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this)" name="type2">typetext</li>
      

  4.   

    楼主有些前后矛盾选大类->是全选小类还是enable小类?
    取消大类->...?
    选择小类->...?
    取消小类->...?建议自己学习语法,出问题再说
      

  5.   

    不好意思,多次麻烦
    可不可以推荐几本Javascript的书呢?我的意思是:选大类 --> enable小类 同时全选小类,取消大类选择-->disable小类, 取消小类选择。
      

  6.   

    <input type="checkbox" name="a" onclick="checkChild(this)">
      <input type="checkbox" name="a">
    <input type="checkbox" name="b" onclick="checkChild(this)">
      <input type="checkbox" name="b">
    <script language=javascript>
    function checkChild(obj){
      var list = document.getElementsByName(obj.name);
      var chk = obj.checked;
      for(var i=1;i<list.length;i++){
        list[i].checked=chk;
        list[i].disabled=!chk;
      }
    }
    </script>
      

  7.   

    抱歉,我自己都晕了,不过问题基本解决了,非常感谢 fosjos(无聊的菜鸟程序员) 和上面的各位zhaoxiaoyang朋友,我根据 fosjos 的程序,自己写了一个<script language="javascript">
    function checkChild(name,chk){
      var list = document.getElementsByName(name);
      for(var i=0;i<list.length;i++)
      {
    list[i].checked = chk;
       }
    }function checkParent(id,obj){
      var obj0=document.getElementById(id);
      if(obj.checked){
        obj0.checked=true;
        return;
      }
      else
      {
       obj0.checked=false;
      }
      
      var list = document.getElementsByName(obj.name);
      for(var i=0;i<list.length;i++)
        if(list[i].checked)
    obj0.checked=true;
      
    }  </script>用了一下符合自己的要求,还没仔细研究一下,有点不明白其中的逻辑,再次感谢 fosjos
      

  8.   

    我也做了一个,看符合不符合要求.请大家指教.
    function chkParent(op,str){
    var needchk = document.getElementsByName(str);
    if(op.checked){ 
    if(needchk != null){
    if(needchk.length != null){
    for(var i = 0 ;i<needchk.length ;i++){
    needchk[i].checked = true;
    }
    }else{
    needchk.checkde = true;
    }
    }
    }else{
    if(needchk != null){
    if(needchk.length != null){
    for(var i = 0 ;i<needchk.length ;i++){
    needchk[i].checked = false;
    }
    }else{
    needchk.checked = false;
    }
    } }
    }
    function chkClk(op,str,nameStr){
    var needchk = document.getElementById(str);
    var testchk = document.getElementsByName(nameStr);
    var flag;
    if(op.checked){
    if(testchk != null){
    if(testchk .length != null){
    for(var i = 0 ;i<testchk .length ;i++){
    if(!testchk [i].checked){
    flag = 0;
    break;
    }
    }
    }else{
    if(!testchk .checked){
    flag = 0; 
    }
    }
    }
    if(flag !=0){
    needchk.checked = true;
    }else{
    needchk.checked = false;

    }else{
    needchk.checked = false;
    }
    }<input type="checkbox" onclick="chkParent(this,'type1')" name="type3" id="type3" flag="main">typetext
    <li><input type="checkbox" onclick="chkClk(this,'type3','type1')" name="type1">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this,'type3','type1')" name="type1">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this,'type3','type1')" name="type1">typetext</li><br/><br/>
    <input type="checkbox" onclick="chkParent(this,'type2')" name="type4" id="type4" flag="main">typetext
    <li><input type="checkbox" onclick="chkClk(this,'type4','type2')" name="type2">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this,'type4','type2')" name="type2">typetext</li>
    <li><input type="checkbox" onclick="chkClk(this,'type4','type2')" name="type2">typetext</li>