<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
p {margin:0;font-size:12px;line-height:26px;}
</style>
<script type="text/javascript">
function check_all(obj,cName)
{
    var checkboxs = document.getElementsByName(cName);

    for(var i=0;i<checkboxs.length;i++)
{
checkboxs[i].checked = obj.checked;
}
}
</script>
</head>
 
<body>
<p>主;请选择管理员权限:<input type="checkbox" name="c" /></p>
<p>子;查看:<input type="checkbox" name="all" value="" onclick="check_all(this,'c')"  /></p>
<p>子;修改:<input type="checkbox" name="all" value="" onclick="check_all(this,'c')" /></p>
<p>子;删除:<input type="checkbox" name="all" value="" onclick="check_all(this,'c')" /></p>
<p>子;禁用:<input type="checkbox" name="all" value="" onclick="check_all(this,'c')" /></p>
</body>
</html>当选择子菜单时,自己选择主菜单,我想问,子菜单有选择时,主菜单就得选择上,现在的问题是,我选了,查看,修改两项,取消查看时,主菜单也取消了,??怎么才能够子菜单有选择时,主菜单就得选择上

解决方案 »

  1.   

    选上 主菜单 必然选上 就不用判断
    取消时判断一下同级菜单是否都取消即可。function check_all(obj, cName) {
    var found = obj.checked;
    if (!found) { // 取消时
    var checkboxs = document.getElementsByName(obj.name);
    for (var i = 0; i < checkboxs.length && !found; i++)
    if (checkboxs[i].checked) found = true;
    }

    var checkboxs = document.getElementsByName(cName);
    for (var i = 0; i < checkboxs.length; i++) {
    checkboxs[i].checked = found;
    }
    }
      

  2.   

    function check_all(obj,cName)
    {
    var checkbox=document.getElementsByTagName("input");
    //alert("1111");
    var j=0;
    for(var i=1;i<checkbox.length;i++){
    if(checkbox[i].type=="checkbox"&&checkbox[i].name=="all"&&checkbox[i].checked){
    checkbox[0].checked=true;
    j+=1;
    }
    }
    if(j==0){
    checkbox[0].checked=false;
    }
    }
      

  3.   

    function check_all(obj,cName)
    {
        var checkboxs = document.getElementsByName(cName);
        
        for(var i=1;i<checkboxs.length;i++)
        {
         if(checkboxs[i].checked){checkboxs[1].checked = "checked"}
          else{
            //如果子的都取消的话,主 也应该取消吧,再遍历判断一下就可以了
         }
            }
    }
      

  4.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <style type="text/css">
    p {margin:0;font-size:12px;line-height:26px;}
    </style>
    <script type="text/javascript">
    function check_all(obj,cName)
    {
       var checkboxs = document.getElementsByName(cName);
        
        //for(var i=0;i<checkboxs.length;i++)
        //{
        // checkboxs[i].checked = obj.checked;
        //}
         checkboxs[0].checked = checkAll();
       
    }
    function checkAll()
    {

     var checkboxAll = document.getElementsByName("all");
     for(var i=0;i<checkboxAll.length;i++)
     {
      if(checkboxAll[i].checked)
      {
      return true;
      }
     }
     return false;
    }
    </script>
    </head>
     
    <body>
    <p>主;请选择管理员权限:<input type="checkbox" name="c" /></p>
    <p>子;查看:<input type="checkbox" name="all" value="" onclick="check_all(this,'c')"  /></p>
    <p>子;修改:<input type="checkbox" name="all" value="" onclick="check_all(this,'c')" /></p>
    <p>子;删除:<input type="checkbox" name="all" value="" onclick="check_all(this,'c')" /></p>
    <p>子;禁用:<input type="checkbox" name="all" value="" onclick="check_all(this,'c')" /></p>
    </body>
    </html>
      

  5.   

    不用遍历的办法var _n = 0;
    function check_all(obj,cName)
    {
    _n = obj.checked ? _n+1 : _n-1; if(_n){
    document.getElementsByName(cName)[0].checked = true;
    }else{
    document.getElementsByName(cName)[0].checked = false;
    }
    }
      

  6.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <style type="text/css">
    p {margin:0;font-size:12px;line-height:26px;}
    </style>
    </head>
     
    <body>
    <p>主;请选择管理员权限:<input type="checkbox" name="c" id="c" /></p>
    <p>子;查看:<input type="checkbox" name="all" value="" onclick="check_all('c', 'all')"  /></p>
    <p>子;修改:<input type="checkbox" name="all" value="" onclick="check_all('c', 'all')" /></p>
    <p>子;删除:<input type="checkbox" name="all" value="" onclick="check_all('c', 'all')" /></p>
    <p>子;禁用:<input type="checkbox" name="all" value="" onclick="check_all('c', 'all')" /></p>
    </body>
    </html>function check_all(main,sub)
    {
      var main = document.getElementById('c'),
          subs = document.getElementsByName(sub);
      for(var i = 0, count = subs.length; i < count; i++)
      {
        if(subs[i].checked)
        {
          main.checked = true;
          return;
        }
      }
      main.checked = false;
    }
      

  7.   

    再短些var _n = 0;
    function check_all(obj,cName)
    {
    _n = obj.checked ? _n+1 : _n-1;
    document.getElementsByName(cName)[0].checked = !!_n;
    }
      

  8.   

       var checkboxs = document.getElementsByName(cName);
        var arr= document.getElementsByName("all");
        var flag=false;
        for(var i=0;i<checkboxs.length;i++)
        {
           for(var k=0;k<arr.length;k++)
           {
              if(arr[k].checked==true)
              {
               
               flag=true;
              }
             
            }
          if(flag)
    {
          
            checkboxs[i].checked ="true";
    }
            else
            {
             checkboxs[i].checked ="";
            }
        }