当前位置 主页 > 服务器问题 > Linux/apache问题 >

    JS实现点餐自动选择框(案例分析)

    栏目:Linux/apache问题 时间:2019-12-12 10:32

    效果图:

    1. 目标需求(一共两个):

    1.点击上方全选/全不选选择框,实现对应功能
    2.点击下方选择框,如果所有选择框同时被选中,则上方全选框自动变成勾选状态,否则是非勾选状态

    2.思路分析:

    1.实现上面选择框全选全不选功能,添加上面的鼠标点击事件,让下方所有选择框跟上方一样就行
    2.下方选择框在点击时,使用开关思想来检查是否是全部都选择的状态

    3.js实现步骤:

    上方全选/全不选选择框,实现步骤

    1.获取元素

    var chkAll=document.getElementById('checkAll');
     var chkList=document.getElementsByName('check');

    2.实现上方选择框全选/全不选功能

     chkAll.onclick=function ( ) {
       for(var i=0;i<chkList.length;i++){
        chkList[i].checked=this.checked;
        }
     }

    3.下方选择框点击

    开关思想:当一个操作的结果只有两种状态,就可以使用布尔类型来表示这两种状态 isAllOk = true(全部选中)

    1.提出假设 isAllOk = true
    2.验证假设
    3.根据验证结果来实现需求

      

     //3.1遍历下方按钮,检查下方按钮的点击事件
     for(var i=0;i<chkList.length;i++){
      chkList[i].onclick=function ( ) {
       var isAllChecked=true;//假设全部都是选中状态
       for(var j=0;j<chkList.length;j++){
         if(chkList[j].checked==false){
          isAllChecked=false;
         }
        }
       //检测完毕之后,根据开关的值来设置上方选择框的状态
       if(isAllChecked==true){
        chkAll.checked=true;
       }
       else {
        chkAll.checked=false;
       }
      }
      }

    最后附上完整的代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Title</title>
     <style>
      * {
       margin: 0;
       padding: 0;
      }
      table {
       border: 1px solid #c0c0c0;
       margin: 100px auto;
       /*margin两个值代表上下,左右*/
       text-align: center;
       width: 500px;
    
       border-collapse: collapse;
       /*边框合并,如果相邻,则共用一个边框*/
      }
      th{
       font:bold 15px "微软雅黑";
       background-color: #09c;
       color: #fff;
       height: 24px;
      }
      td {
       border: 1px solid #d0d0d0;
       color: #404060;
       padding: 15px;
      }
     </style>
    </head>
    <body>
    <table>
     <!--caption是表格的标题-->
     <caption>点餐系统</caption>
     <thead>
     <tr>
      <th>
       <input type="checkbox" >全选/全不选
      </th>
      <th>菜名</th>
      <th>商家</th>
      <th>价格</th>
     </tr>
     </thead>
     <tbody>
     <tr>
      <td>
       <input type="checkbox" name="check"/>
      </td>
      <td>红烧肉</td>
      <td>隆江猪脚饭</td>
      <td>¥200</td>
     </tr>
     <tr>
      <td>
       <input type="checkbox" name="check"/>
      </td>
      <td>香酥排骨</td>
      <td>隆江猪脚饭</td>
      <td>¥998</td>
     </tr>
     <tr>
      <td><input type="checkbox" name="check"/></td>
      <td>北京烤鸭</td>
      <td>隆江猪脚饭</td>
      <td>¥88</td>
     </tr>
    
     </tbody>
     <tfoot>
     <tr>
     </tr>
     </tfoot>
    </table>
    <script>
     //1.获取界面对应元素
     var chkAll=document.getElementById('checkAll');
     var chkList=document.getElementsByName('check');
     //2.实现上方选择框全选/全不选功能
     chkAll.onclick=function ( ) {
       for(var i=0;i<chkList.length;i++){
        chkList[i].checked=this.checked;
        }
     }
     //3.实现下方选择功能
     //3.1遍历下方按钮,检查下方按钮的点击事件
     for(var i=0;i<chkList.length;i++){
      chkList[i].onclick=function ( ) {
       var isAllChecked=true;//假设全部都是选中状态
       for(var j=0;j<chkList.length;j++){
         if(chkList[j].checked==false){
          isAllChecked=false;
         }
        }
       //检测完毕之后,根据开关的值来设置上方选择框的状态,下面也可以简写为 checkAll.checked = isAllChecked;
       if(isAllChecked==true){
        chkAll.checked=true;
       }
       else {
        chkAll.checked=false;
       }
      }
      }
    </script>
    </body>
    </html>