一、classList API 是什么

  1. 属于 DOM API,HTML5 引入,用来操作 HTML 标签的 class 属性值。
  2. classList 属性是一个只读的类数组对象,“实时”地代表了元素的类名集合。
  3. classList 对象上定义了 6 个实用的操作 class 属性值的方法。

二、classList 对象上的属性和方法

属性:

length:返回当前类列表中类的个数。

方法:

  1. add(class1, class2, ...):添加类
  2. remove(class1, class2, ...):删除类
  3. toggle(class[, force]):当前类列表中如果不存在指定的类,则执行添加类操作,返回 true;否则执行删除类操作,返回 false。force 是一个函数,决定 toggle 方法最终执行何种操作——当函数返回 true 时,执行添加类操作,返回 false,执行删除类操作。
  4. contains(class):是否包含指定类。
  5. item(index):返回当前类列表中指定位置的类名。
  6. toString():返回当前类列表的字符串表示。

接下来会举些使用上述方法和属性的例子(这里有一个 线上的例子 ),这些例子都会用到下面这段 HTML 代码。

<span id="element" class="description"></span>

2.1 add() 方法

添加一个类名:

document.getElementById('element').classList.add('red');
// class="description red"

添加多个类名:

document.getElementById('element').classList.add('red', 'bold');
// class="description red bold"

{提示} 如果提供的类名已存在,就不会重复添加。

2.2 remove() 方法

删除一个类名:

document.getElementById('element').classList.remove('description');
// class=""

删除多个类名:

document.getElementById('element').classList.remove('description', 'red');
// class=""

2.3 toggle() 方法

document.getElementById('element').classList.toggle('description');
// class="" document.getElementById('element').classList.toggle('description');
// class="description"

2.4 item() 方法

document.getElementById('element').classList.item(0);
// 返回 "description" document.getElementById('element').classList.item(2);
// 返回 null

2.5 contains 方法

if (document.getElementById('element').classList.contains('description')) {
// 一些逻辑代码……
} else {
// 不同的逻辑代码……
}

2.6 toString() 方法

console.log(document.getElementById('element').classList.toString());
// 打印 "description" document.getElementById('element').classList.add('red', 'bold');
console.log(document.getElementById('element').classList.toString());
// 打印 "description red bold"

2.7 length 属性

console.log(document.getElementById('element').classList.length);
// 打印 1

浏览器兼容性

IE10+ 和其他所有浏览器。其中 IE10+(包括土鳖 UC)属于部分支持,不支持的内容包括:

  1. 不支持 SVG 或 MathML 元素。
  2. 不支持 toggle 方法的第二个参数。
  3. 不支持多参数形式的 add()remove() 方法。

不过都是小事,可以使用 polyfill 解决。

参考链接

https://www.sitepoint.com/exploring-classlist-api/

(完)

使用 classList API的更多相关文章

  1. [Javascript] Manipulate the DOM with the classList API

    Learn how to add, remove and test for CSS classes using the classList API. It's more powerful than u ...

  2. HTML5 classList API接口

    原文地址:HTML5 classList API 原文日期: 2010年07月13日 翻译日期: 2013年08月23日 当我陷入JavaScrip和JavaScript类库框架之中时,我总是有种希望 ...

  3. 温习classList api

    有道题是一个removeClass的功能,代码里是正则分隔了传入的name,根据name的个数,循环移除掉,让寻找bug..看了了这几行代码,首先想到的是我会如何去优化. 如果看代码一两分钟就能找到公 ...

  4. HTML5 classList API

    Having thrust myself into the world of JavaScript and JavaScript Libraries, I've often wondered: Whe ...

  5. [转]HTML5 classList API

    Having thrust myself into the world of JavaScript and JavaScript Libraries, I've often wondered: Whe ...

  6. HTML5的classList API优化对样式名className的操作

    //添加一个class elem.classList.add(classname); //删除一个class elem.classList.remove(classname); //判断一个class ...

  7. element.dataset API

    不久之前我向大家展示了非常有用的classList API,它是一种HTML5里提供的原生的对页面元素的CSS类进行增.删改的接口,完全可以替代jQuery里的那些CSS类操作方法.而另外一个非常有用 ...

  8. H5新增属性classList

    H5新增属性classList h5中新增了一个classList,原生js可以通过它来判断获取dom节点有无某个class. classList是html元素对象的成员,它的使用非常简单,比如 co ...

  9. h5的classList对象

    H5新增属性classList h5中新增了一个classList,原生js可以通过它来判断获取dom节点有无某个class. classList是html元素对象的成员,它的使用非常简单,比如 co ...

随机推荐

  1. CodeForces - 651D:Image Preview (双指针&)

    Vasya's telephone contains n photos. Photo number 1 is currently opened on the phone. It is allowed ...

  2. Python学习笔记一(基础信息)

    目录 输入输出 数据类型和变量 整数 浮点数 字符串 布尔值 空值 变量 常量 小结 欢迎关注我的博客我在马路边 说明:此笔记不是从零开始,在学习的过程中感觉需要记录一些比较重要和需要重复浏览的信息, ...

  3. Storm实时计算:流操作入门编程实践

    转自:http://shiyanjun.cn/archives/977.html Storm实时计算:流操作入门编程实践   Storm是一个分布式是实时计算系统,它设计了一种对流和计算的抽象,概念比 ...

  4. 畅通工程再续 (kruskal算法的延续)

    个人心得:这题其实跟上一题没什么区别,自己想办法把坐标啥的都给转换为对应的图形模样就好了 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实 ...

  5. Genymotion的使用 -- A Faster Android Emulator

    Genymotion 安装与配置 1,Genymotion 模拟器 EditText获取焦点时不自动弹出软件盘 选择该模拟器的设置--> 选中Use Virtual keyboard for t ...

  6. MLCC 电容的的 NP0 C0G 材质

    MLCC 电容的的 NP0 C0G 材质 随手记一下. MLCC 中最稳定的材质 NP0 C0G,NP0 和 C0G 是相同的,只是不同的产商不同的名字而已. 注意中间的是 0 不是 英文字母 O,虽 ...

  7. bzoj 1009 [HNOI2008]GT考试——kmp+矩阵优化dp

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1009 首先想到 确保模式串不出现 就是 确保每个位置的后缀不是该模式串. 为了dp,需要记录 ...

  8. hl7消息中和时间有关的字段的格式

    hl7消息中有许多segment(段)包含时间类型的Field.常用的MSH, EVN, PID中的时间字段及其格式为: 1. MSH-7, Date/time Of Message为yyyyMMdd ...

  9. flask之基础概念

    [应用]一个 Flask 应用是一个 Flask 类的实例.可以在一个被称为应用工厂的函数内部创建 Flask实例.所有应用相关的配置.注册和其他设置都会在函数内部完成,然后返回这个应用.__init ...

  10. iOS类目、延展和协议

    类目:为已知的类增加新的方法:注意:类目里面只能写方法,不能写声明和属性,所以,类目不能作为接口来用 1.类目无法向已有类中添加实例变量.2.如果类目中的方法和已有类中的方法名称冲突时,类目中的方法优 ...