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 相关文章推荐
9个javascript语法高亮插件 推荐
Jul 18 Javascript
Node.js实战 建立简单的Web服务器
Mar 08 Javascript
了不起的node.js读书笔记之node.js中的特性
Dec 22 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
Oct 12 Javascript
JS中substring与substr的用法
Nov 16 Javascript
Bootstrap table简单使用总结
Feb 15 Javascript
JS实现DIV高度自适应窗口示例
Feb 16 Javascript
jquery表单验证实例仿Toast提示效果
Mar 03 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 jQuery
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
jdk1.8+vue elementui实现多级菜单功能
Sep 24 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
PHP 采集心得技巧
2009/05/15 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
不可错过的十本Python好书
2017/07/06 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
意大利时尚精品店:Nugnes 1920
2020/02/10 全球购物
乡镇平安建设汇报材料
2014/08/25 职场文书
活动总结格式
2014/08/30 职场文书
小学生手册家长意见
2015/06/03 职场文书
电影开国大典观后感
2015/06/04 职场文书
《社戏》教学反思
2016/02/22 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android