最推荐使用classList API操作CSS类名,它语义清晰、兼容IE10+且避免字符串错误;可通过classList获取类集合、contains()判断存在性、add()/remove()/toggle()增删切换单/多个类、replace()替换类或className全量覆盖。
javascript 提供了多种方式获取和修改元素的类名,最推荐、最安全的方式是使用 classlist api,它专为操作 css 类设计,语义清晰、兼容性好(ie10+),且能避免字符串拼接带来的错误。
获取元素的所有类名
使用 element.classList 可以获取一个 DOMTokenList 对象,它类似数组,包含当前元素所有类名:
-
element.classList—— 返回类名集合(只读) -
element.classList.value—— 返回空格分隔的字符串(等同于element.className) -
element.classList.length—— 类名数量 -
element.classList[0]或element.classList.item(0)—— 获取第 1 个类名
判断某个类是否存在
用 contains() 方法检查是否含有指定类名,返回布尔值:
-
element.classList.contains('active')→true或false - 比
className.includes('active')更可靠,不会误匹配子串(如'inactive'中也含'active')
添加、删除、切换单个或多个类
classList 提供了简洁的方法,支持传入多个类名(字符串参数):
-
element.classList.add('btn', 'btn-primary')—— 添加一个或多个类 -
element.classList.remove('disabled', 'loading')—— 删除一个或多个类 -
element.classList.toggle('hidden')—— 存在则删,不存在则加 -
element.classList.toggle('active', condition)—— 按条件控制开关(condition为 true/false)
替换类名或一次性重置所有类
需要彻底更新类时,可直接赋值 className,或用 replace() 配合 classList:
立即学习“Java免费学习笔记(深入)”;
-
element.className = 'new-class'—— 全量覆盖(慎用,会清空所有原有类) -
element.classList.replace('old', 'new')—— 替换单个类(仅支持现代浏览器,Chrome 61+/Firefox 49+) - 批量替换旧类:先
remove()再add(),更兼容


















