现在实现了点全选的checkbox的全选和取消全选 ,现在有个问题,如何实现 ,点下面的那一排checkbox中的一个 全选的那个checkbox的checked就变成false了。
<script language="javascript">
        function checkAll(name) {
            var el = document.getElementsByTagName('input');
            var len = el.length;
            for (var i = 0; i < len; i++) {
                if ((el[i].type == "checkbox") && (el[i].name == name)) {
                    el[i].checked = true;
                }
            }
        }
        function clearAll(name) {
            var el = document.getElementsByTagName('input');
            var len = el.length;
            for (var i = 0; i < len; i++) {
                if ((el[i].type == "checkbox") && (el[i].name == name)) {
                    el[i].checked = false;
                }
            }
        }</script>
<input type="checkbox"  id="cbglsyAll" value="" onclick="if(this.checked==true) { checkAll('gl'); } else { clearAll('gl'); }"  name="gl" />全选
                                <br />
                                <input type="checkbox" name="gl" id="cbJbsz" value=""  />基本设置
                                <input type="checkbox" name="gl" id="cbSsyh" value="" />搜索优化
                                <input type="checkbox" name="gl" id="cbGggl" value="" />公告管理
                                <input type="checkbox" name="gl" id="cbYqlj" value="" />友情链接
                                <input type="checkbox" name="gl" id="cbAdv" value="" />广告管理
                                <input type="checkbox" name="gl" id="cbHdp" value="" />幻灯片

解决方案 »

  1.   

    点基本设置、搜索优化、公告管理、友情链接、广告管理、幻灯片中的一个checkbox 全选的那个checkbox就取消选中了。
      

  2.   

    比较笨的办法就是给所有的checkbox加上onclick事件。
    判断如果未选中就给cbglsyAll设为未选中,当然JQ会比较方便点。。
      

  3.   

    <script language="javascript">
            function checkAll(name) {
                var el = document.getElementsByTagName('input');
                var len = el.length;
                for (var i = 0; i < len; i++) {
                    if ((el[i].type == "checkbox") && (el[i].name == name)) {
                        el[i].checked = true;
                    }
                }
            }
            function clearAll(name) {
                var el = document.getElementsByTagName('input');
                var len = el.length;
                for (var i = 0; i < len; i++) {
                    if ((el[i].type == "checkbox") && (el[i].name == name)) {
                        el[i].checked = false;
                    }
                }
            }
            
            document.documentElement.onclick = function(e)
            {
               e = e || window.event;
               t = e.target || e.srcElement;
               if(t.name != "gl") return;
               var checkboxes = document.getElementsByName("gl");
               var checkall = true;
               for(var i = 0 ; i < checkboxes.length ; i ++)
               {
                    if(!checkboxes[i].checked)
                    {
                       checkall = false;
                       break;
                    }
               }
               document.getElementById("cbglsyAll").checked = checkall
            }</script><input type="checkbox"  id="cbglsyAll" value="" onclick="if(this.checked==true) { checkAll('gl'); } else { clearAll('gl'); }"  name="all" />全选
                                    <br />
                                    <input type="checkbox" name="gl" id="cbJbsz" value=""  />基本设置
                                    <input type="checkbox" name="gl" id="cbSsyh" value="" />搜索优化
                                    <input type="checkbox" name="gl" id="cbGggl" value="" />公告管理
                                    <input type="checkbox" name="gl" id="cbYqlj" value="" />友情链接
                                    <input type="checkbox" name="gl" id="cbAdv" value="" />广告管理
                                    <input type="checkbox" name="gl" id="cbHdp" value="" />幻灯片
      

  4.   

        window.onload = function() {
                var chks = document.getElementsByName("gl");
                //不包括全选按钮,从1开始           
                for (var i = 1; i < chks.length; i++) {
                    chks[i].onclick = setState;
                }
            }        function setState() {
                var chks = document.getElementsByName("gl");
                var selectedCount = 0;
                for (var i = 1; i < chks.length; i++) {
                    if (chks[i].checked) {
                        selectedCount++;
                    }
                }
                document.getElementById("cbglsyAll").checked = (selectedCount == chks.length-1);
            }