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 相关文章推荐
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
Jun 17 Javascript
jquery mobile实现拨打电话功能的几种方法
Aug 05 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
Feb 07 Javascript
jQuery scroll事件实现监控滚动条分页示例
Apr 04 Javascript
JSON取值前判断
Dec 23 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
Jun 07 Javascript
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
简单谈谈JS中的正则表达式
Sep 11 Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
基于JS实现快速读取TXT文件
Aug 25 Javascript
vue+vant 上传图片需要注意的地方
Jan 03 Vue.js
微信小程序实现发微博功能的示例代码
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 if 想到的些问题
2008/03/22 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
浅析return false的正确使用
2013/11/04 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
Python制作CSDN免积分下载器
2015/03/10 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
numpy中的高维数组转置实例
2018/04/17 Python
Python 面试中 8 个必考问题
2018/11/16 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
python全局变量引用与修改过程解析
2020/01/07 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
公司授权委托书范文
2014/08/02 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
广告业务员岗位职责
2015/02/13 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang
python中urllib包的网络请求教程
2022/04/19 Python