JS实现多选框的操作


Posted in Javascript onJune 24, 2020

本文实例为大家分享了JS实现多选框的具体代码,供大家参考,具体内容如下

JS实现多选框的操作

多选时:

JS实现多选框的操作

全选时:

JS实现多选框的操作

反选时:

JS实现多选框的操作

html代码

<div class="container">
 <h3>请选择你最喜欢吃的水果(多选)</h3>
 <ul>
  <li><input type="checkbox">苹果</li>
  <li><input type="checkbox">雪梨</li>
  <li><input type="checkbox">西瓜</li>
  <li><input type="checkbox">哈密瓜</li>
  <li><input type="checkbox">荔枝</li>
  <li><input type="checkbox">龙眼</li>
 </ul>
 <div class="checkinAll">
  <input type="checkbox" id="checkAll">全选/非全选
  <input type="checkbox" id="checkTurn">反选
 </div>
</div>

CSS代码:

*{
  margin: 0;
  padding: 0;
}
.container{
  width: 300px;
  /* height: 500px; */
  /* border: 1px solid black; */
  margin: 10px auto;
}
.container ul{
  list-style: none;
  width: 100%;
  margin-top: 20px;
  border: 1px solid #666;
  border-radius: 10px;
  margin-bottom: 10px;
}
.container ul li{
  width: 100%;
  height: 70px;
  border-bottom: 1px solid #666;
  line-height: 70px;
  text-indent: 50px;
  font-size: 16px;
  font-weight: 600;
  
}
.container ul li:last-child{
  border-radius: 0 0 11px 11px;
  border: none;
}
.container ul li:first-child{
  border-radius: 11px 11px 0 0;
   /* border: none; */
 }
input[type='checkbox']{
  width: 20px;
  height: 20px;
  vertical-align: middle;
  cursor: pointer;
  -webkit-appearance: none;
  border: 1px solid #666;
  border-radius: 3px;
}
input[type='checkbox']:checked{
  background-image: url(./select.png);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 100% 100%;
  outline: none;
}
ul input{
  margin-right: 40px;
}

JS代码:

(function(){
  const list_node = document.getElementsByTagName('li');
  const ul_node = document.getElementsByTagName('ul')[0]
  const colorArr = ['rgb(255,235,205)','rgb(255,240,245)','rgb(255,211,155)'];
  const check_nodes = ul_node.getElementsByTagName('input');
  const checkAll = document.getElementById('checkAll');
  const checkTurn = document.getElementById('checkTurn')
  for(let i = 0; i < list_node.length; i++){
    list_node[i].style.backgroundColor = colorArr[i % colorArr.length];
    list_node[i].addEventListener('click',clickFn);
  }
  function clickFn(e){
    console.log(e.target.tagName);
    let num = 0;
   if(e.target.tagName == 'INPUT' && e.target.checked == false){
     checkAll.checked = false;
   }else{
    for (let i = 0; i < check_nodes.length; i++) {
      if(check_nodes[i].checked == true){
        num++;
      }
      
    }
    if(num == check_nodes.length){
      checkAll.checked = true;
    }
   }
  }
  //全选/非全选
  checkAll.onclick = function(){
    if(this.checked == true){
      for (let i = 0; i < check_nodes.length; i++) {
        check_nodes[i].checked = true;
        
      }
    }else{
      for (let i = 0; i < check_nodes.length; i++) {
        check_nodes[i].checked = false;
        
      }
    }
  }
  //反选
  checkTurn.onclick = function(){
    let count = 0;
    let num = 0;
    for (let i = 0; i < check_nodes.length; i++) {
      if(check_nodes[i].checked == true){
      check_nodes[i].checked = false;
      count ++;
      }else{
      check_nodes[i].checked = true;
      num++;
      }
      
    }
    if(count == check_nodes.length){
      checkAll.checked = false;
    }else if(num == check_nodes.length){
      checkAll.checked = true;
    }
  }
})()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQueryEasyUI datagrid框架的进阶使用
Apr 08 Javascript
JS判断不能为空实例代码
Nov 26 Javascript
javascript创建和存储cookie示例
Jan 07 Javascript
js实现支持手机滑动切换的轮播图片效果实例
Apr 29 Javascript
Jquery Mobile 自定义按钮图标
Nov 18 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
Jun 14 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
React-Native中props具体使用详解
Sep 04 Javascript
Vue DevTools调试工具的使用
Dec 05 Javascript
layui 监听表格复选框选中值的方法
Aug 15 Javascript
利用Dectorator分模块存储Vuex状态的实现
Feb 05 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
Mar 01 Javascript
微信小程序实现发微博功能的示例代码
Jun 24 #Javascript
JavaScript实现答题评分功能页面
Jun 24 #Javascript
JS实现电脑虚拟键盘打字测试
Jun 24 #Javascript
JS实现简单打字测试
Jun 24 #Javascript
微信小程序实现多选框功能的实例代码
Jun 24 #Javascript
JS实现电脑虚拟键盘的操作
Jun 24 #Javascript
基于PHP pthreads实现多线程代码实例
Jun 24 #Javascript
You might like
mysql 字段类型说明
2007/04/27 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
基于element-ui的rules中正则表达式
2018/09/04 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
Mac安装python3的方法步骤
2019/08/09 Python
Python实现word2Vec model过程解析
2019/12/16 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
Python中如何定义一个函数
2016/09/06 面试题
大二学期个人自我评价
2014/01/13 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
买房委托公证书
2014/04/08 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
python中__slots__节约内存的具体做法
2021/07/04 Python
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers