口sequencing
  口plasmid
  口pcr product
  口phage
如果先选了大的checkbox(sequencing),下面三个小的可任意选。
如果先选择了任意一个小的,不可以反选大的。

解决方案 »

  1.   

    既然lz是mm,那得帮忙啊.问一下,反选是什么?
    如果第一个没选,可选么?选了可选没么?
      

  2.   


    可以理解为默认选中或者enable了。
      

  3.   


    function changeC(obj,id){
        if(obj.checked == true){
             document.getElementById(id).checked=true;
        }
    }
    //生成checkBox的时候小的checkBox给这个事件 onclick="chageC(this,'大的checkBox的ID')"
      

  4.   

    帮个参考,然后自己改一下就可以了
    <script type="text/javascript">
      //可以在treeview 中用
    //OnClick = "OnTreeNodeChecked();"
            function OnTreeNodeChecked() {
                var ele = event.srcElement;
                if (ele.type == 'checkbox') {
                    var childrenDivID = ele.id.replace('CheckBox', 'Nodes');
                    var div = document.getElementById(childrenDivID);
                    if (div != null) {
                        var checkBoxs = div.getElementsByTagName('INPUT');
                        for (var i = 0; i < checkBoxs.length; i++) {//向下
                            if (checkBoxs[i].type == 'checkbox')
                                checkBoxs[i].checked = ele.checked;
                        }
                    }
                    OnTreeNodeChildChecked(ele);
                }
            }        function OnTreeNodeChildChecked(ele) {//向上
                //递归处理
                var parentDiv = ele.parentElement.parentElement.parentElement.parentElement.parentElement;
                var parentChkBox = null;
                try {
                    parentChkBox = document.getElementById(parentDiv.id.replace('Nodes', 'CheckBox'));
                }
                catch (error) { ; }
                if (parentChkBox != null) {
                    var ChildsChkAll = true;
                    var Boxs = parentDiv.getElementsByTagName('INPUT');
                    for (var i = 0; i < Boxs.length; i++) {
                        if (Boxs[i].type == 'checkbox' && Boxs[i].checked == false) {
                            ChildsChkAll = false;
                        }
                    }
                    parentChkBox.checked = ChildsChkAll;
                    OnTreeNodeChildChecked(parentChkBox);
                }
            }
        </script>
      

  5.   

    帮个参考,然后自己改一下就可以了
    <script type="text/javascript">
      //可以在treeview 中用
    //OnClick = "OnTreeNodeChecked();"
            function OnTreeNodeChecked() {
                var ele = event.srcElement;
                if (ele.type == 'checkbox') {
                    var childrenDivID = ele.id.replace('CheckBox', 'Nodes');
                    var div = document.getElementById(childrenDivID);
                    if (div != null) {
                        var checkBoxs = div.getElementsByTagName('INPUT');
                        for (var i = 0; i < checkBoxs.length; i++) {//向下
                            if (checkBoxs[i].type == 'checkbox')
                                checkBoxs[i].checked = ele.checked;
                        }
                    }
                    OnTreeNodeChildChecked(ele);
                }
            }        function OnTreeNodeChildChecked(ele) {//向上
                //递归处理
                var parentDiv = ele.parentElement.parentElement.parentElement.parentElement.parentElement;
                var parentChkBox = null;
                try {
                    parentChkBox = document.getElementById(parentDiv.id.replace('Nodes', 'CheckBox'));
                }
                catch (error) { ; }
                if (parentChkBox != null) {
                    var ChildsChkAll = true;
                    var Boxs = parentDiv.getElementsByTagName('INPUT');
                    for (var i = 0; i < Boxs.length; i++) {
                        if (Boxs[i].type == 'checkbox' && Boxs[i].checked == false) {
                            ChildsChkAll = false;
                        }
                    }
                    parentChkBox.checked = ChildsChkAll;
                    OnTreeNodeChildChecked(parentChkBox);
                }
            }
        </script>
      

  6.   

    <div id="parent1">
     <input type="checkbox" name="id" onclick="selectSubDiv('parent1',this)">
    </div>
    <div id="subparent1">
    <input type="checkbox" name="id" onclick="SetParent('parent1')">
    <input type="checkbox" name="id" onclick="SetParent('parent1')">
    <input type="checkbox" name="id" onclick="SetParent('parent1')">
    </div><script type="text/javascript">
    function SetParent(id)
    {
        var obj=document.getElementById(id);
         if(obj==null)
              return;
        var sub=document.getElementById("sub"+id);
        if(sub==null)
            return;
        var el=sub.getElementsByTagName("input")
    var flag=false;
       for(var i=0;i<el.length;i++) //判断子Div是否有选中情况
       {
              if(el[i].type=="checkbox" && el[i].checked)
             {
                   flag=true;
             }
        }
        el=obj.getElementsByTagName("input");//得到父Div checkbox
        if(el!=null && el.length>0)
        {
             el[0].checked=flag;
        }
    }function selectSubDiv(id,obj)
    {
      var sub=document.getElementById("sub"+id);
        if(sub==null)
            return;
        var el=sub.getElementsByTagName("input")
       var flag=obj.checked;
       for(var i=0;i<el.length;i++) //父选中,子跟着选中
       {
              if(el[i].type=="checkbox")
             {
                   el[i].checked=flag;
             }
        }}</script>以上代码,没有调试,原理基本上就是这个
      

  7.   

    <input type="checkbox" name="1" id="1" value="1" onclick="changeLarge(this)" />请假<br>
    <input type="checkbox" name="2" id="2" value="2" onclick="changeLittle(this)" disabled="true"/>病假<br>
    <input type="checkbox" name="3" id="3" value="3" onclick="changeLittle(this)" disabled="true"/>年假<br>
    <script language="javascript" >
    function changeLarge(obj) {
    if(obj.checked == true){
             document.getElementById(2).disabled=false;
             document.getElementById(3).disabled=false;
         } else {
         document.getElementById(2).disabled=true;
             document.getElementById(3).disabled=true;
         }
    }
    function changeLittle(obj) {
    if(obj.checked == true) {
    document.getElementById(1).disabled=true;
    }else {
    if(document.getElementById(2).checked == false && document.getElementById(3).checked == false) {

    document.getElementById(1).disabled=false;
    }
    }
        
    }
     
     
     </script>
      

  8.   

    我自己写的一个假TREEVIEW,
    全用SPAN和CHECKBOX循环出来的,
    有4级,三百多行,
    CHECKBOX的勾选联动也没你们这么复杂。我的规则是:
    1〉如果子节点被选中,父节点相应要选中,并且上朔。
    2〉如果父节点被选中,子节点相应要全部选中(并且上朔)
    3〉如果父节点被反选(去掉勾),子节点相应要全部反选(并且上朔)
    4〉如果子节点全部被反选,父节点相应要反选。
      

  9.   

    function changeC(obj,id){
        if(obj.checked == true){
             document.getElementById(id).checked=true;
        }
    }
    //生成checkBox的时候小的checkBox给这个事件 onclick="chageC(this,'大的checkBox的ID')"obj是小的,id是大的,这个完全可以实现到。
    不要搞的那么复杂。尽量把复杂的简单化
      

  10.   

    http://blog.csdn.net/happy664618843/archive/2010/02/02/5282930.aspx参考
      

  11.   

    不写代码,简单说下:
    父级ID 为一级  如01
    子级ID 为二级  如01_01name 相同oncheck(this.id)判断长度,或判断_存在不存在,存在则SUBSTR进行父菜单同时选中,
    如果不存在,则不操作 或全选所有以父ID开头的CHECKBOX暂时我所有的JS都是这么做级联选择的。
      

  12.   

    <title></title>
    <script type="text/javascript" charset="gb2312">
    function change(evag)
    {
       var arr =    document.getElementById("childrencla").getElementsByTagName("input");
       for(var i = 0; i < arr.length; i ++ )
       {
          if(arr[i].checked)
          {
             evag.checked = true;
             return;
          }
       }
    }
    function chang2(evag)
    {
       if(evag.checked)
       {
          document.getElementById("top").checked = true;
       }
    }
    </script>
    </head>
    <body>
    <div class="topcla">
        <input id="top" type="checkbox" onclick="change(this);"/>
        <label for="top">sequencing</label>
        <div id="childrencla">
            <input id="child1" type="checkbox" onclick="chang2(this);"/>
            <label for="child1">plasmid</label><br/>
            <input id="child2" type="checkbox" onclick="chang2(this);"/>
            <label for="child2">pcrproduct</label><br/>
            <input id="child3" type="checkbox" onclick="chang2(this);"/>
            <label for="child3">phage</label><br/>
        </div>
    </div>
    </body>
      

  13.   

    hi,又看到你啦。
    加了css:
    <html><head><title></title>
    <style type="text/css">
        .topcla{ width : 150px ; background-color : #de2 ;}
        .childrencla{ margin-left : 20px ; background-color : #a35 ;}
    </style>
    <script type="text/javascript" charset="gb2312">
    function change(evag)
    {
       var arr =    document.getElementById("children").getElementsByTagName("input");
       for(var i = 0; i < arr.length; i ++ )
       {
          if(arr[i].checked)
          {
             evag.checked = true;
             return;
          }
       }
    }
    function chang2(evag)
    {
       if(evag.checked)
       {
          document.getElementById("top").checked = true;
       }
    }
    </script>
    </head>
    <body>
    <div class="topcla">
        <input id="top" type="checkbox" onclick="change(this);"/>
        <label for="top">sequencing</label>
        <div id="children" class="childrencla">
            <input id="child1" type="checkbox" onclick="chang2(this);"/>
            <label for="child1">plasmid</label><br/>
            <input id="child2" type="checkbox" onclick="chang2(this);"/>
            <label for="child2">pcrproduct</label><br/>
            <input id="child3" type="checkbox" onclick="chang2(this);"/>
            <label for="child3">phage</label><br/>
        </div>
    </div>
    </body>
    </html>
      

  14.   

    function CheckChange(CheckObj,CheckID){
        if(CheckObj.checked == true){
             document.getElementById(CheckID).checked=true;
        }
    }
    这个比较简单吧,带俩参
      

  15.   

      var Fcheck=document.getElementsByName('父CheckID');
     var obj=document.getElementsByName('子复选框的Name');
      for(int i=0;i<obj.length;i++)
     {
          if(Fcheck.checked=true)
         {
            obj[i].checked=!obj[i].checked;
         }
         if(obj[i].checked=true)
         {
          Fcheck.checked=true;
         }
     }
      

  16.   

    上面是反选的。
        弄错了。。
    这下面的是全选。或全不选
     for(int i=0;i<obj.length;i++)
     {
      if(Fcheck.checked=true)
      {
      obj[i].checked=true;
      }
      else
      {
        obj[i].checked=false;
      }
      if(obj[i].checked=true)
      {
      Fcheck.checked=true;
      }
      

  17.   

    没有树,何必那么复杂呢。
     document.getElementById("大的").checked = true
      

  18.   

     parentChkBox.checked = ChildsChkAll;
                    OnTreeNodeChildChecked(parentChkBox