经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
JS实现表单全选以及取消全选实例
来源:jb51  时间:2022/3/7 14:37:37  对本文有异议

本文实例为大家分享了JS实现表单全选以及取消全选的具体代码,供大家参考,具体内容如下

实现效果:

全选按钮:点击全选按钮所有的小按钮都会被选中;点掉全选按钮,所有按钮取消选中;

小按钮:只有全部被选中,全选按钮才会被选中

思路分析:

1、全选和取消全选做法:让下面所有复选框的 checked属性(选中状态)跟随全选按钮即可

使用 this.checked 可以获得当前复选框的状态,如果是true就代表被选中,如果是false就代表没被选中。

注:<input>的 checked 属性是一个布尔属性,checked 属性规定在页面加载时应该被预先选定的<input> 元素。

inp[i].checked = this.checked; 使下面所有的复选框的checked属性值等同于 全选按钮的checked值,跟随全选按钮的状态。

this.checked 得到的是 true或是 false,如果是true,就把true赋值给所有下面的复选框的 checked属性。

想实现全选和取消全选,最核心的思路就在于:把全选按钮当前是否选中的状态,将这个状态赋给下面所有复选框

2、下面的复选框需要全部选中,上面全选按钮才是选中状态的做法:(下面复选框的小按钮有一个没被选中,那么全选按钮也是没被选中的状态)给下面的复选框绑定点击事件,每次点击都要循环查看下面复选框是否还有没被选中的,如果有一个没被选中的,上面全选就不选中。

3、可以设置一个变量来控制全选按钮是选中还是没选中。var flag=true;

代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. ? ? <meta charset="UTF-8">
  5. ? ? <title>表单全选+取消全选</title>
  6. ? ? <style>
  7. ? ? *{
  8. ? ? ? ? ? margin:0;padding: 0;
  9. ? ? ? }
  10. ? ? ? table{
  11. ? ? ? ? ? width:500px;
  12. ? ? ? ? ? position:relative;
  13. ? ? ? ? ? margin:100px auto;
  14. ? ? ? ? ? border-collapse:collapse;
  15. ? ? ? ? ? border:1px solid #d7d7d7;
  16. ? ? ? }
  17. ? ? ? thead tr{
  18. ? ? ? ? ? background-color:#222;
  19. ? ? ? ? ? font-weight: 600;
  20. ? ? ? ? ? color:#e9e9e9;
  21. ? ? ? }
  22. ? ? ? tbody tr:hover{
  23. ? ? ? ? ? background: #F5F5F5;
  24. ? ? ? }
  25. ? ? ? table tr{
  26. ? ? ? ? ? text-align: center;
  27. ? ? ? ? ? height:30px;
  28. ? ? ? }
  29. ? ? </style>
  30. </head>
  31. <body>
  32. <table border=1>
  33. ? ? <thead>
  34. ? ? ? ? <tr>
  35. ? ? ? ? ? ? <td><input type="checkbox" id='cekall'></td>
  36. ? ? ? ? ? ? <td>商品</td>
  37. ? ? ? ? ? ? <td>价钱</td>
  38. ? ? ? ? </tr>
  39. ? ? </thead>
  40. ? ? <tbody>
  41. ? ? ? ? <tr>
  42. ? ? ? ? ? ? <td><input type="checkbox" name="" id=""></td>
  43. ? ? ? ? ? ? <td>iPhone 11</td>
  44. ? ? ? ? ? ? <td>5999.0</td>
  45. ? ? ? ? </tr>
  46. ? ? ? ? <tr>
  47. ? ? ? ? ? ? <td><input type="checkbox" name="" id=""></td>
  48. ? ? ? ? ? ? <td>荣耀20</td>
  49. ? ? ? ? ? ? <td>2299.0</td>
  50. ? ? ? ? </tr>
  51. ? ? ? ? <tr>
  52. ? ? ? ? ? ? <td><input type="checkbox" name="" id=""></td>
  53. ? ? ? ? ? ? <td>iPhone XR</td>
  54. ? ? ? ? ? ? <td>4499.0</td>
  55. ? ? ? ? </tr>
  56. ? ? </tbody>
  57. ? ? </table>
  58. </body>
  59. <script>
  60.  
  61. ? ? // 1、全选和取消全选做法:让下面所有复选框的 checked属性(选中状态)跟随全选按钮即可
  62. ? ? // 获取元素,获取全选按钮和下面小的复选框
  63. ? ? var cekall = document.getElementById('cekall');
  64. ? ? var inp = document.querySelector('tbody').getElementsByTagName('input');
  65. ? ? // 注册事件
  66. ? ? cekall.onclick = function(){
  67. ? ? ? ? // this.checked ?可以得到当前复选框的选中状态,如果是 true 就是选中,如果是 false 就是未选中
  68. ? ? ? ? console.log(this.checked);
  69. ? ? ? ? for(var i=0; i< inp.length; i++){
  70. ? ? ? ? ? ? inp[i].checked = this.checked;
  71. ? ? ? ? }
  72. ? ? }
  73. ? ? // 2、下面的复选框要全部选中,上面的全选按钮才能够全部选中,给下面的所有复选框绑定事件,每次点击,都要循环查看下面下面所有的复选框是否有没选中的,如果有没选中的复选框,那么上面的全选按钮就不选中。
  74. ? ? for(var i = 0; i<inp.length; i++){
  75. ? ? ? ? inp[i].onclick = function(){
  76. ? ? ? ? // 设置一个变量来控制按钮是否全部选中
  77. ? ? ? ? var flag = true;
  78. ? ? ? ? // 每次点击下面的复选框都要检查下面的四个小按钮是否被全部选中。
  79. ? ? ? ? for(var i =0; i<inp.length; i++){
  80. ? ? ? ? ? ? if(!inp[i].checked){
  81. ? ? ? ? ? ? ? ? flag = false;
  82. ? ? ? ? ? ? ? ? }
  83. ? ? ? ? ? ? }
  84. ? ? ? ? cekall.checked = flag;
  85. ? ? ? ? }
  86. ? ? }
  87. </script>
  88. </body>
  89. </html>

实现效果:

点击全选按钮

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号