常用的js全选checkbox按钮的功能

在WEB项目中关于全选的checkbox功能肯定会遇到,而且每个项目中都会有不少的地方会用到。下面把以前自己用的例子贴出来,在ie和firefox下都可以正常运行,有兴趣的朋友也可以参考下。

例子示意图如下:



代码如下:

Html代码 复制代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  2. <html><head><title>checkbox的js全选功能</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  3. <link href="default.css" type="text/css" rel="stylesheet" />  
  4. <script language="JavaScript" src="selectall.js"></script>  
  5. <script>  
  6.     function sel(obj){   
  7.         _tlsCheckboxSelAll(document.frmUser,obj);   
  8.     }   
  9. </script>  
  10. </head><body bgcolor="#FFFFFF" topmargin="15px" leftmargin="5px" rightmargin="5px">        
  11. <center><b>checkbox的js全选功能</b></center>  
  12. <form name="frmUser" id="frmUser" method="post">             
  13. <table class="tabelBoder"  width="100%" align="center" cellspacing="0" cellpadding="3" border="0">  
  14. <tr height="30" class="RH1">  
  15. <td width="4%" align="left"><input type="checkbox" name="id_all" id="id_all" value="46" onclick="sel(this)"></td>  
  16. <td width="17%" align="left">姓名</td>  
  17. <td width="23%" align="left">地址</td>  
  18. </tr>  
  19. <tr height="30" class="N1">  
  20. <td width="4%" align="left"><input type="checkbox" name="id" value="46" onclick="sel(this)"></td>  
  21. <td width="17%" align="left">张三</td>  
  22. <td width="23%" align="left">北京</td>  
  23. </tr>  
  24. <tr height="30" class="N1">  
  25. <td width="4%" align="left"><input type="checkbox" name="id" value="46" onclick="sel(this)"></td>  
  26. <td width="17%" align="left">李四</td>  
  27. <td width="23%" align="left">上海</td>  
  28. </tr>  
  29. <tr height="30" class="N1">  
  30. <td width="4%" align="left"><input type="checkbox" name="id" value="46" onclick="sel(this)"></td>  
  31. <td width="17%" align="left">王五</td>  
  32. <td width="23%" align="left">天津</td>  
  33. </tr>  
  34. </table>  
  35. </form>  
  36. <ui>  
  37.     <li>支持ie和firefox</li>  
  38.     <li>选中全选checkbox,则所有子checkbox自动选中</li>  
  39.     <li>去掉选中全选checkbox,则所有子checkbox自动全部取消选中</li>  
  40.     <li>如果选中全部子checkbox,则全选checkbox自动选中</li>  
  41.     <li>全选后,如果去掉选中任何子checkbox,则全选checkbox自动取消选中</li>  
  42. </ul>  
  43. </body></html>  


Js代码 复制代码
  1. /**  
  2.  * checkbox的点击方法  
  3.  * 要求:  
  4.  * 1.全选/全不选的checkbox的name属性为 单个checkbox的name属性名+_all , 注意:最后必须为_all.  
  5.  *   例如:单个checkbox的name=or_id,则全选checkbox的name=or_id_all  
  6.  * 2.全选/全不选的checkbox必须定义id属性,并且id属性值与name属性值相同  
  7.  * 3.所有单个的checkbox在同一个form中.  
  8.  * 4.全选/全不选的checkbox可以在form中也可以在form外面.  
  9.  * 5.整个页面不允许再有和全选/全不选checkbox同name和同id的组件.  
  10.  *   
  11.  */  
  12. function _tlsCheckboxSelAll(formObj,checkboxClicked){   
  13.     var checkName = checkboxClicked.name;//取得点击的checkbox的name属性   
  14.     var index = checkName.indexOf("_all");//判断是否有_all字符串   
  15.     var isAll = false;   
  16.     if(index!=-1){//如果有_all   
  17.         if(index+"_all".length==checkName.length){//满足说明_all是在最后面,表示这是个全选/全不选的checkbox.   
  18.             isAll = true;   
  19.         }   
  20.     }   
  21.     var thisChecked = checkboxClicked.checked;//当前checkbox的状态 true=选中 false=不选中   
  22.     if(isAll){//点了全选/全不选的checkbox   
  23.         var childCheckName = checkName.substring(0,index);   
  24.         eval("var allChildCheckboxs = formObj."+childCheckName);   
  25.         var childCheckboxCount = allChildCheckboxs.length;   
  26.         if(childCheckboxCount==null){//只有1个单个的checkbox   
  27.             allChildCheckboxs.checked = thisChecked;   
  28.         }else{//有2个或2个以上的单个checkbox   
  29.             for(var i=0;i<childCheckboxCount;i++){   
  30.                 allChildCheckboxs[i].checked = thisChecked;   
  31.             }   
  32.         }   
  33.     }else{//点了单个的checkbox   
  34.         var parentCheckboxName = checkName+"_all";   
  35.         if(thisChecked==false){   
  36.             document.getElementById(parentCheckboxName).checked=false;   
  37.         }else{//判断点了当前checkbox后是否全部的单个checkbox都处于true状态   
  38.             eval("var allChildCheckboxs = formObj."+checkName);   
  39.             var childCheckboxCount = allChildCheckboxs.length;   
  40.             var isAllChecked = true;   
  41.             if(childCheckboxCount==null){//只有1个单个的checkbox   
  42.                 if(allChildCheckboxs.checked==false){   
  43.                     isAllChecked = false;   
  44.                 }   
  45.             }else{//有2个或2个以上的单个checkbox   
  46.                 for(var i=0;i<childCheckboxCount;i++){   
  47.                     if(allChildCheckboxs[i].checked==false){   
  48.                         isAllChecked = false;   
  49.                         break;   
  50.                     }   
  51.                 }                  
  52.             }   
  53.             if(isAllChecked){//全部单个checkbox都处于true状态   
  54.                 document.getElementById(parentCheckboxName).checked=true;   
  55.             }   
  56.         }   
  57.     }   
  58. }  

此上为转帖看到这段代码不错,不过就是实现起来太复杂了。

 

还有别的方法也可以基本实现此功能

 

一,

  1. function onSelectAll()   
  2.  {   
  3.  for(var i = 0;i<document.forms.form1.length;i++){   
  4.         if(document.forms.form1.elements[i].type=="checkbox"){   
  5.             if(checkAll.checked==true){   
  6.             document.forms.form1.elements[i].checked=true;}   
  7.             else{   
  8.             document.forms.form1.elements[i].checked=false;   
  9.             }   
  10.         }   
  11.     }   
  12.  }  

二。

  1.  function selectAll(obj){
        var chkobj = document.getElementsByName("chkid");
        if(chkobj!=null){
           if(obj.checked){
             for(var i=0;i<chkobj.length;i++){
              chkobj[i].checked=true;
             }
           }
           else{
             for(var i=0;i<chkobj.length;i++){
              chkobj[i].checked=false;
             }
           }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值