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 相关文章推荐
JavaScript 获得选中文本内容的方法
Feb 15 Javascript
javascript实现全角与半角字符的转换
Jan 07 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
Nov 25 Javascript
localStorage实现便签小程序
Nov 28 Javascript
深入理解JS继承和原型链的问题
Dec 17 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
Mar 09 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
Mar 02 Javascript
vuejs实现下拉框菜单选择
Oct 23 Javascript
Vue通过懒加载提升页面响应速度
May 10 Vue.js
原生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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
python二维键值数组生成转json的例子
2019/12/06 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
如何理解Python中包的引入
2020/05/29 Python
如何把python项目部署到linux服务器
2020/08/26 Python
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
英语道歉信范文
2014/01/09 职场文书
银行求职信怎么写
2014/05/26 职场文书
健康状况证明书
2014/11/26 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书