checkbox的indeterminate属性使用介绍

yizhihongxing

checkbox的indeterminate属性使用介绍

概述

checkbox是前端常用的控件之一,可以用来表示两种状态:选中或未选中。但实际开发中,有时候需要对多个checkbox进行操作,这时候判断这些checkbox的选中状态就有些繁琐了。所以,checkbox提供了一个特殊的状态:indeterminate(半选中状态),可以在未完全选中或未完全取消选中的情况下,表示一个节点或者子节点下部分数据选中的情况。

使用方法

  1. 在HTML中设置checkbox的indeterminate属性

在HTML中设置checkbox的indeterminate属性可以通过DOM的方法,也可以直接在HTML标签中设置。其中,DOM方法包括setAttribute和removeAttribute方法,而在HTML标签中设置可以通过如下方式实现:

<input type="checkbox" id="check" indeterminate>
  1. JavaScript中通过属性设置indeterminate状态

通过JavaScript属性设置checkbox的indeterminate状态是比较常用的方法,可以分为两个步骤:

(1)先选中checkbox控件

var checkbox = document.getElementById('check');

(2)设置checkbox的indeterminate属性为true或false

checkbox.indeterminate = true;

示例说明

示例1:对checkbox全选进行操作

需求:在一个复杂表单里,有多个商品数据需要展示,并且每个商品都有对应的checkbox,为表单做全选、反选等操作。

实现方法:获取所有checkbox的DOM节点,对checkbox的checked和indeterminate属性进行操作。

<input type="checkbox" id="checkAll"> 全选
<input type="checkbox" class="checkSub"> 商品1
<input type="checkbox" class="checkSub"> 商品2
<input type="checkbox" class="checkSub"> 商品3
<input type="checkbox" class="checkSub"> 商品4
var checkAll = document.querySelector('#checkAll');
var checkSub = document.querySelectorAll('.checkSub');
checkAll.addEventListener('change', function () {
  for (var i = 0; i < checkSub.length; i++) {
    checkSub[i].checked = this.checked;
    checkSub[i].indeterminate = false;
  }
});
for (var i = 0; i < checkSub.length; i++) {
  checkSub[i].addEventListener('change', function () {
    var checkedCount = 0;
    for (var j = 0; j < checkSub.length; j++) {
      if (checkSub[j].checked) {
        checkedCount++;
      }
    }
    checkAll.checked = checkedCount === checkSub.length;
    checkAll.indeterminate = checkedCount !== 0 && checkedCount !== checkSub.length;
  });
}

示例2:checkbox的多级联动操作

需求:页面中有一个“全选”按钮,当其中的一项(父级)被选中时,下一级的所有checkbox也应该被选中,但如果下一级的某一项被手动取消选择,则父级的状态也应变为“半选择状态”。

实现方法:对父子级别checkbox的checked和indeterminate属性进行操作。

<input type="checkbox" id="parent"> 父级
  <ul>
    <li><input type="checkbox" class="child"> 子级1</li>
    <li><input type="checkbox" class="child"> 子级2</li>
  </ul>
var parent = document.getElementById('parent');
var child = document.querySelectorAll('.child');
parent.addEventListener('change', function () {
  for (var i = 0; i < child.length; i++) {
    child[i].checked = this.checked;
    child[i].indeterminate = false;
  }
});
for (var i = 0; i < child.length; i++) {
  child[i].addEventListener('change', function () {
    var checkedCount = 0;
    for (var j = 0; j < child.length; j++) {
      if (child[j].checked) {
        checkedCount++;
      }
    }
    parent.checked = checkedCount === child.length;
    parent.indeterminate = checkedCount !== 0 && checkedCount !== child.length;
  });
}

以上,就是对于checkbox的indeterminate属性使用介绍的详细攻略了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:checkbox的indeterminate属性使用介绍 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JS中数组Array的用法示例介绍

    下面是JS中数组Array的用法示例介绍的完整攻略。 数组定义与初始化 数组定义了一系列变量,可以通过一个变量名获取其中任意一个变量的值。在 JavaScript 中,可以使用以下方式来定义和初始化一个数组: let array = [1, 2, 3, 4, 5]; // 数组里有5个数字 let emptyArray = []; // 定义空数组 数组的基…

    JavaScript 2023年5月27日
    00
  • 简单谈谈JS数组中的indexOf方法

    关于“简单谈谈JS数组中的indexOf方法”的攻略,我会详细讲解如下。 什么是 indexOf 方法 在 JavaScript 中,数组是一种常用的数据结构,它提供了许多方法来操作数组。其中一个非常有用的方法是 indexOf。这个方法可以用来查找数组中某个元素的位置。 如何使用 indexOf 方法 语法 arr.indexOf(searchElemen…

    JavaScript 2023年5月27日
    00
  • JS中轻松遍历对象属性的几种方式

    关闭符合MD格式的字体 JS中轻松遍历对象属性的几种方式 JS中的对象是一种非常重要的数据类型,有时候我们需要遍历对象的所有属性以进行操作。下面是几种轻松遍历对象属性的方式: 方式1:for…in循环遍历对象 for…in是一种常见的遍历对象属性的方法。它可以遍历对象上的所有属性,可以处理对象本身定义的属性,还可以处理从Object.prototyp…

    JavaScript 2023年5月27日
    00
  • JS获取当前时间戳与时间戳转日期时间格式问题

    获取当前时间戳是JavaScript中一项基本操作,而将时间戳转化为日期时间格式也是开发过程中常用功能。本文将详细讲述这两个问题的解决方案。 获取当前时间戳 在JavaScript中获取当前的时间戳,我们可以使用Date对象的getTime()方法获取,该方法会返回从标准时间1970年1月1日 00:00:00 UTC到当前时间的毫秒数。 const tim…

    JavaScript 2023年5月27日
    00
  • JavaScript定时器用法

    JavaScript定时器是一种用于在指定时间间隔后执行代码的功能。在Web应用程序中,它们经常用于将动画效果与其他用户交互部分结合起来。本攻略将详细介绍JavaScript定时器,包括setTimeout和setInterval函数的用法。 setTimeout setTimeout函数允许我们在指定的时间间隔之后执行一段代码。以下是setTimeout函…

    Web开发基础 2023年3月30日
    00
  • javascript 程序库的比较(一)之DOM功能

    下面是关于”JavaScript程序库比较之DOM功能”的完整攻略。 什么是DOM DOM(Document Object Model)是文档对象模型的缩写,指的是网页中所有HTML标签元素的树形结构。在JavaScript中,可以通过DOM来访问和操作页面中的元素,比如修改元素的样式、内容和属性等。 JavaScript程序库的介绍 DOM操作是一项常见的…

    JavaScript 2023年5月27日
    00
  • 也说JavaScript中String类的replace函数

    请允许我详细讲解“也说JavaScript中String类的replace函数”的完整攻略。 了解replace函数 首先,我们需要了解一下JavaScript中,String类的replace函数是什么。 replace函数是一个用于替换字符串的工具函数,它的用法如下: str.replace(regexp|substr, newSubStr|functi…

    JavaScript 2023年5月28日
    00
  • 一些老手都不一定知道的JavaScript技巧

    一些老手都不一定知道的JavaScript技巧 1. 用单行代码实现一个简单的深拷贝 const deepCopy = obj => JSON.parse(JSON.stringify(obj)) 这个单行代码利用了JSON对于Object类型的序列化和反序列化功能,先将对象序列化为字符串,再将字符串反序列化为Javascript对象。这种方式可以实现…

    JavaScript 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部