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 相关文章推荐
最常用的12种设计模式小结
Aug 09 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
May 03 Javascript
对于this和$(this)的个人理解
Sep 08 Javascript
页面加载完毕后滚动条自动滚动一定位置
Feb 20 Javascript
Javascript基础知识(三)BOM,DOM总结
Sep 29 Javascript
JavaScript定义类和对象的方法
Nov 26 Javascript
js上传图片及预览功能实例分析
Apr 24 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
Apr 23 Javascript
使用BootStrap实现悬浮窗口的效果
Dec 13 Javascript
JavaScript拖动层Div代码
Mar 01 Javascript
Vue中CSS动画原理的实现
Feb 13 Javascript
javascript之Object.assign()的痛点分析
Mar 03 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应用技巧
2008/03/27 PHP
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
discuz目录文件资料汇总
2014/12/30 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
python求素数示例分享
2014/02/16 Python
使用Python获取Linux系统的各种信息
2014/07/10 Python
python实现连接mongodb的方法
2015/05/08 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
经理职责范文
2013/11/08 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
幼师中班个人总结
2015/02/12 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python
python代码实现备忘录案例讲解
2021/07/26 Python