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


Posted in Javascript onDecember 10, 2019

效果图:

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>

总结

以上所述是小编给大家介绍的JS实现点餐自动选择框,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
jQuery中eq()方法用法实例
Jan 05 Javascript
jquery实现的蓝色二级导航条效果代码
Aug 24 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
BootStrap智能表单实战系列(七)验证的支持
Jun 13 Javascript
JS清除字符串中重复值的实现方法
Aug 03 Javascript
用js读写cookie的简单方法(推荐)
Aug 08 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
Sep 17 Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
详解如何用webpack4从零开始构建react开发环境
Jan 27 Javascript
在项目vue中使用echarts的操作步骤
Sep 07 Javascript
原生js实现随机点餐效果
Dec 10 #Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
Dec 10 #Javascript
JavaScript多种滤镜算法实现代码实例
Dec 10 #Javascript
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 #Javascript
vue实现随机验证码功能(完整代码)
Dec 10 #Javascript
vue实现短信验证码登录功能(流程详解)
Dec 10 #Javascript
基于vue实现图片验证码倒计时60s功能
Dec 10 #Javascript
You might like
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
python实现下载文件的三种方法
2017/02/09 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
python装饰器练习题及答案
2019/11/01 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
django中related_name的用法说明
2020/05/20 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
毕业生幼师求职自荐信
2013/10/01 职场文书
个性婚礼策划方案
2014/05/17 职场文书
暑期学习心得体会
2014/09/02 职场文书
学校运动会加油词
2015/07/18 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js