• 原生JS实现全选和不全选


    • 案例演示

    • 源代码
    <!DOCTYPE html>
    <html>
    <head lang="en">
      <meta charset="UTF-8">
      <title></title>
      <style>
        * {
          padding: 0;
          margin: 0;
        }
    
        .wrap {
           300px;
          margin: 100px auto 0;
        }
    
        table {
          border-collapse: collapse;
          border-spacing: 0;
          border: 1px solid #c0c0c0;
           300px;
        }
    
        th,
        td {
          border: 1px solid #d0d0d0;
          color: #404060;
          padding: 10px;
        }
    
        th {
          background-color: #09c;
          font: bold 16px "微软雅黑";
          color: #fff;
        }
    
        td {
          font: 14px "微软雅黑";
        }
    
        tbody tr {
          background-color: #f0f0f0;
        }
    
        tbody tr:hover {
          cursor: pointer;
          background-color: #fafafa;
        }
      </style>
    </head>
    <body>
    <div class="wrap">
      <table>
        <thead>
        <tr>
          <th>
            <input type="checkbox" id="j_cbAll"/>
          </th>
          <th>菜名</th>
          <th>饭店</th>
        </tr>
        </thead>
        <tbody id="j_tb">
        <tr>
          <td>
            <input type="checkbox"/>
          </td>
          <td>红烧肉</td>
          <td>田老师</td>
        </tr>
        <tr>
          <td>
            <input type="checkbox"/>
          </td>
          <td>西红柿鸡蛋</td>
          <td>田老师</td>
        </tr>
        <tr>
          <td>
            <input type="checkbox"/>
          </td>
          <td>鱼香肉丝</td>
          <td>田老师</td>
        </tr>
        <tr>
          <td>
            <input type="checkbox"/>
          </td>
          <td>小葱拌豆腐</td>
          <td>田老师</td>
        </tr>
    
        </tbody>
      </table>
    </div>
    
    <script>
    
     var cksAll=document.getElementById('j_cbAll');
      var cks = document.getElementById('j_tb').getElementsByTagName("input");
      cksAll.onclick=function() {
        for (var i = 0; i < cks.length; i++) {
          cks[i].checked=this.checked;
    
        }
      };
    
      for(var i=0;i<cks.length;i++){
        cks[i].onclick=function(){
         var flag=true;
         for(var j=0;j<cks.length;j++){
          if(!cks[j].checked){
            flag=false;
            break;
          }
         }
         cksAll.checked=flag;
        };
      }
    </script>
    </body>
    </html>
    全选和不全选》.html
     
    • 具体实现 
    • 思想方法

                             //全选:点击全选按钮,其他的小按钮都选中,说明小按钮的状态是跟着全选按钮而变化的

                            //不全选:小按钮有一个没选择,全选不选中

    •        核心代码
       
      //获取全选按钮
      var cksAll=my$("j_cbAll");
      //获取其他小按钮
      var cks = my$("j_tb").getElementsByTagName("input");
      //实现点击全选按钮,小按钮的状态跟着全选按钮变化 cksAll.onclick
      =function() { for (var i = 0; i < cks.length; i++) { cks[i].checked=this.checked; } };
      //遍历每一个小按钮
      for(var i=0;i<cks.length;i++){
      //为每一个按钮注册点击事件 cks[i].onclick
      =function(){
      //开始默认全都选中
      var flag=true; for(var j=0;j<cks.length;j++){
      //循环过程中如果有一个小按钮没被选中,就将flag=false,并且此时不需要继续遍历了
      if(!cks[j].checked){ flag=false; break; } }
      //全选按钮状态和flag相同 cksAll.checked
      =flag; }; }
    虽然现在走得很慢,但不会一直这么慢
  • 相关阅读:
    iOS数字媒体开发浅析
    Servlet
    Qt之图形(绘制文本)
    Qt之图形(转换)
    asp.net 缓存公共类
    logback.xml
    ext树菜单实体类
    ext,exrReturn新增,修改删除等用
    ExtPager ,分页
    ExtGridReturn ,存放ext的实体类集合和总数
  • 原文地址:https://www.cnblogs.com/xxm980617/p/10491597.html
Copyright © 2020-2023  润新知