HTML复选框--checkbox

2023-05-16

在公司实际开发中,会经常遇到复选框全选、多选、统计选中个数的情况,所以总结研究了一些大神的帖子,汇总学习一下!

1.统计被选中复选框的个数
2.点击复选框,执行对应函数
3.获取复选框的状态
4.全选、取消全选动作

1.利用原生JS代码

1)统计被选中复选框的个数

checkbox要是属于同一组的,在复选框的属性内name=”mm”属性要写一致;这样可以通过下面代码获得同一组复选框

var names = document.getElementsByName("mm");       //根据name获取一组内的所有复选框
var count = 0;
for(var i=0; i<names.length; i++) {
    if(names[i].checked) {    //获取复选框的状态,被选中时,该值为true
        count++;  //统计被选中复选框的个数
}
//以下是一个完整的测试代码
<html>
<head>
<title>测试复选框checkbox</title>    

<script>        
function static_num() 
{            
    document.getElementById("btnOperate").onclick = function () {                
        var arr = new Array();                
        var items = document.getElementsByName("category");                 
        for (i = 0; i < items.length; i++) {                    
            if (items[i].checked) {                        
                arr.push(items[i].value);                    
            }                
        }                 
        alert("选择的个数为:" + arr.length);            
    };        
};    
</script>
</head>

<body>    
    <p><input type="checkbox" name="category" value="今日话题" />今日话题 </p>   
    <p><input type="checkbox" name="category" value="视觉焦点" />视觉焦点</p>
    <p><input type="checkbox" name="category" value="财经" />财经</p>    
    <p><input type="checkbox" name="category" value="汽车" />汽车</p>    
    <p><input type="checkbox" name="category" value="科技" />科技</p>    
    <p><input type="checkbox" name="category" value="房产" />房产</p>    
    <p><input type="checkbox" name="category" value="旅游" />旅游</p>    

    <p><input id="btnOperate" type="button" value="选择" onclick="static_num()" /></p>

</body>
</html>

2).点击复选框,执行对应函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试checked用法</title>
</head>
<body>
    <input type="checkbox" name="category" value="今日话题" id="category"/>今日话题

    <script type="text/javascript">
        window.onload = function(){
            //备注:addEventListener只能和getElementById()函数绑在一起用,若改为getElementsByName()会报错
            var check_text = document.getElementById('category');

            //addEventListener()方法可以避免在html代码中内嵌 js方法
            check_text.addEventListener("click", function () {
                if(check_text.checked) {
                    alert("您已成功选择" + check_text.value);
                } else {
                    alert("取消选择" + check_text.value);
                }
            });
        };
    </script>
</body>
</html>

3).获取复选框的状态

如上面两个例子所述,可以通过如下代码,获取多选框状态

items.checked  //被选中时值为true,否则为false

4)全选、取消全选动作

下面是一个完整的html测试文件,本例子中,用到了 less.js 来编译css文件,建议还没有接触过less的同学,了解一下less编码,非常简单易学而且高效。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试checked用法</title>
    <!--引入 less 样式表-->
    <link rel="stylesheet/less" type="text/css" href="./public/css/less-js-checkbox.less">

    <!-- 引入less样式文件 -->
    <script>less = {env : 'development'}</script>
    <script type="text/javascript" src="./public/js/less.js"></script>
    <script>less.watch();</script>

</head>
<body>
    <!--<input type="checkbox" name="category" value="今日话题" id="category"/>今日话题-->
    <!-- div块,显示整个checkbox表 -->
    <div class="show_box">
        <div class="header_row">
            <label for="fruit"><input type="checkbox" name="fruit" id="fruit" value="水果"/>水果</label>
        </div>
        <div class="list_row">
            <label for="apple"><input type="checkbox" name="fruit-items" id="apple" value="苹果"/>苹果</label>
        </div>
        <div class="list_row">
            <label for="banana"><input type="checkbox" name="fruit-items" id="banana" value="香蕉"/>香蕉</label>
        </div>
        <div class="list_row">
            <label for="strawberry"><input type="checkbox" name="fruit-items" id="strawberry" value="草莓"/>草莓</label>
        </div>
        <div class="list_row">
            <label for="peach"><input type="checkbox" name="fruit-items" id="peach" value="桃子"/>桃子</label>

        </div>
    </div>
    <!-- 全选框、取消全选框 -->
    <!-- checkbox列表 -->

    <script type="text/javascript">
        window.onload = function () {
            //水果全选框
            var fruit = document.getElementById('fruit');
            fruit.addEventListener('click', selectAllItems);
            fruit.addEventListener('click', undoAllItems);

            //子节点全选时,全选按钮勾选
            var fruitItems = document.getElementsByName('fruit-items');
            for(var i=0; i<fruitItems.length; i++) {
                fruitItems[i].addEventListener('click', itemsSelectParent);
            }

            //选择所有items
            function selectAllItems() {
                if( fruit.checked) {
                    var fruitItems = document.getElementsByName('fruit-items');
                    for(var i=0; i<fruitItems.length; i++) {
                        if(!fruitItems[i].checked) {
                            fruitItems[i].checked = true;
                        }
                    }
                }
            }

            //取消全选
            function undoAllItems() {
                if( !fruit.checked) {
                    var fruitItems = document.getElementsByName('fruit-items');
                    for(var i=0; i<fruitItems.length; i++) {
                        if(fruitItems[i].checked) {
                            fruitItems[i].checked = false;
                        }
                    }
                }
            }

            //子节点全选时,全选按钮勾选
            function itemsSelectParent() {
                var fruit = document.getElementById('fruit');
                var fruitItems = document.getElementsByName('fruit-items');
                var childStatus = true;
                for(var i=0; i<fruitItems.length; i++) {
                    childStatus = (childStatus && fruitItems[i].checked);
                }
                if(childStatus) {
                    fruit.checked = true;
                } else {
                    fruit.checked = false;
                }

            }
        };
    </script>
</body>
</html>

下面是less样式表的文件:

@base-font: 16px;
@big-font: 20px;
@border: 1px;
@bg-color: #FFF8E1;
@header-bg-color: #F4565E;
@header-btn-color: #FDE330;
@checked-color: #FEE531;

//div块级显示
.show_box {
  width: 400px;
  height: 400px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -200px;
  margin-top: -200px;
  border: @border*2 solid @bg-color;
  background-color: @bg-color;
  font-size: @base-font;
  //首行高亮显示
  .header_row {
    height: 28px;
    padding: 3px 10px;
    position: relative;
    font-size: @big-font;
    background-color: @header-bg-color;

  }
  //checkbox列表行
  .list_row {
    height: 30px;
    padding: 3px 10px;
  }
}

本文转载自
http://www.cnblogs.com/kaituorensheng/p/4529113.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML复选框--checkbox 的相关文章

随机推荐

  • 程序员迷茫:30岁以上的“大龄程码农”出路在哪?java码农该怎么办?

    程序员生存 成功 制胜的法则源自IT精英的职业发展秘诀热爱工作 xff0c 享受生活 为什么程序员过了30就不行了 xff1f 我们被固定在 敲代码 的坑里 xff0c 一干就是10年 xff0c 再干别的早已不会 敲代码已经成了一项流水线
  • Ubuntu添加和设置开机自动启动程序的方法

    ubuntu 18 04 设置开机启动脚本 ubuntu 18 04 设置开机启动脚本 参阅下列链接 https askubuntu com questions 886620 how can i execute command on sta
  • Codewars 刷题笔记(Python)5.Disemvowel Trolls

    题目 Trolls are attacking your comment section A common way to deal with this situation is to remove all of the vowels fro
  • 华为笔试题(4)

    一 计算n x m的棋盘格子 xff08 n为横向的格子数 xff0c m为竖向的格子数 xff09 沿着各自边缘线从左上角走到右下角 xff0c 总共有多少种走法 xff0c 要求不能走回头路 xff0c 即 xff1a 只能往右和往下走
  • ubuntu 16.04 LTS + xgboost 0.7 + GPU support

    记录下安装xgboost 踩过的坑 xff0c 也是为了日后万一再需要 xff0c 可以翻看 cpu版的安装倒是很容易的 xff1a sudo pip install xgboost gpu版 xff1a 为了避免import的时候把旧版的
  • mariaDB JSON函数

    官方文档 xff1a https mariadb com kb en json search
  • #最详细# Github Page 个人博客绑定二级域名

    文章目录 1 必要条件 xff1a 2 操作步骤 xff1a 3 操作3 1 在阿里云控制台添加子域名解析记录3 2 在 Github 中修改配置 1 必要条件 xff1a 已申请个人域名已配置好Github Page 2 操作步骤 xff
  • springboot日志输出到文件

    今天来谈一谈日志 xff0c 主要是说一说springboot的日志 xff0c 因为最近在学习springboot 首先在写代码的时候 xff0c 要养成记日志的习惯 xff0c 这点真的很重要 xff0c 因为之前吃了很多亏 过去我对日
  • Spring--开源的轻量级的Java开发框架

    目录 xff1a 一 Spring 简介1 什么是Spring2 Spring 框架的优点3 Spring 体系结构 二 Spring 容器1 什么是Spring容器2 Spring 容器的实例化3 Spring 容器的使用 三 Sprin
  • viewBinding的搭建,通过反射获取绑定

    再使用viewBinding 的时候报出下面这个异常 java lang NoSuchMethodError No interface method getTypeName Ljava lang Str 代码是这样 Type types 6
  • Java怎么去除字符串中的所有数字?

    String string span class token operator 61 span span class token string 34 abc123zxc56qwer89ws5 34 span span class token
  • Android系统10 RK3399 init进程启动(三十一) SeAndroid实战之定义策略

    配套系列教学视频链接 xff1a 安卓系列教程之ROM系统开发 百问100ask 说明 系统 xff1a Android10 0 设备 xff1a FireFly RK3399 xff08 ROC RK3399 PC PLUS xff09
  • Codewars 刷题笔记(Python)6.Multiples of 3 or 5

    题目 If we list all the natural numbers below 10 that are multiples of 3 or 5 we get 3 5 6 and 9 The sum of these multiple
  • Java多种方式解决生产者消费者问题(十分详细)

    一 问题描述 生产者消费者问题 xff08 Producer consumer problem xff09 xff0c 也称有限缓冲问题 xff08 Bounded buffer problem xff09 xff0c 是一个多线程同步问题
  • Centos6 yum安装VNC-server

    一 环境 Linux操作系统 xff1a centos6 9 二 安装步骤 1 检查是否已经安装了vnc server root 64 VM 0 11 centos rpm q tigervnc tigervnc server packag
  • Docker部署rabbitmq遇到的两个问题

    当使用docker部署rabbitmq时遇到两个问题 xff0c 访问交换机时报错 xff0c 另一种是访问channel时报错 xff0c 本文给大家分享解决方案 xff0c 感兴趣的朋友跟随小编一起看看吧 1 背景 Docker部署ra
  • Python pip源配置修改

    由于某些不可抗因素 xff0c Python官方的包在国内有时无法访问或出现网络不稳定现象 为了解决这个问题就需要将Pip中自带的源地址修改为镜像地址 目前收集的比较好的镜像地址有 xff1a http pypi v2ex com simp
  • 使用k-近邻算法识别手写数字。

    在之前的文章中介绍了k 近邻算法的原理知识并且用Python实现了一个分类器 xff0c 而且完成了一个简单的优化约会网站配对效果的实例 在 机器学习实战 中有关kNN的后一部分内容就是一个手写识别系统 xff0c 可以识别手写的0 9的数
  • Unable to add window -- token android.os.BinderProxy

    The problem is that the dialog need to have the 34 base 34 context of your activity not necessarily the one you 39 re la
  • HTML复选框--checkbox

    在公司实际开发中 xff0c 会经常遇到复选框全选 多选 统计选中个数的情况 xff0c 所以总结研究了一些大神的帖子 xff0c 汇总学习一下 xff01 1 统计被选中复选框的个数 2 点击复选框 xff0c 执行对应函数 3 获取复选