案例:js实现点餐自动选择框

效果图:
在这里插入图片描述

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" id="checkAll">全选/全不选
        </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>

猜你喜欢

转载自blog.csdn.net/xiaodi520520/article/details/82953200