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 相关文章推荐
sina的lightbox效果。
Jan 09 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 Javascript
jquery自定义插件开发之window的实现过程
May 06 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
Feb 14 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
Oct 30 Javascript
webpack dll打包重复问题优化的解决
Oct 10 Javascript
Vue使用NPM方式搭建项目
Oct 25 Javascript
微信小程序实现简单评论功能
Nov 28 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
Oct 25 Javascript
vue设置全局访问接口API地址操作
Aug 14 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
PHP explode()函数用法、切分字符串
2012/10/03 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
php的hash算法介绍
2014/02/13 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
使用SAE部署Python运行环境的教程
2015/05/05 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
简单谈谈Python中的闭包
2016/11/30 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
flask中的wtforms使用方法
2018/07/21 Python
python爬虫基础之urllib的使用
2020/12/31 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
HTML5 input新增type属性color颜色拾取器的实例代码
2018/08/27 HTML / CSS
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
个人作风剖析材料
2014/02/02 职场文书
机关会计岗位职责
2014/04/08 职场文书
求职信格式要求
2014/05/23 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书