推荐使用 classlist 的 add()、remove()、toggle() 和 contains() 等方法操作类名,因其安全、简洁、可读性强,支持批量操作、自动去重、精准匹配,且避免手动处理 classname 字符串的错误风险。

直接用 classList 的 add()、remove()、toggle() 和 contains() 方法,比手动拼接或正则处理 className 字符串更安全、简洁、可读性强。
增删单个类名:用 add() 和 remove()
避免字符串切割和重复判断,浏览器原生支持,自动去重、忽略空格和重复项。
-
elem.classList.add('active')—— 添加类,已存在也不报错 -
elem.classList.remove('disabled')—— 删除类,不存在也无影响 - 支持一次操作多个类:
elem.classList.add('a', 'b', 'c')或remove('x', 'y')
切换类名状态:用 toggle() 判断式控制
比先 contains() 再 add/remove 更简练,尤其适合开关类(如展开/收起、选中/取消)。
-
elem.classList.toggle('hidden')—— 有则删,无则加 -
elem.classList.toggle('highlight', condition)—— 第二个参数为布尔值,按需强制切换
检查与批量操作:contains() 和 replace()/item()
需要逻辑分支或动态处理时,这些方法让代码更健壮。
-
elem.classList.contains('error')—— 返回 true/false,比className.includes('error')更准确(避免子串误匹配) -
elem.classList.replace('old', 'new')—— 原子替换,旧类不存在也不报错 -
elem.classList.item(0)获取第 0 个类名,配合length可遍历(但多数场景用不到)
注意边界情况:classList 是只读集合,不能直接赋值
别写 elem.classList = 'a b',这会报错。要整体重置类名,仍需用 className,但应尽量避免:
- ✅ 推荐:
elem.className = ''清空后逐个add() - ⚠️ 谨慎:
elem.className = 'a b c'—— 会覆盖所有现有类,且不校验合法性 - ? 错误:
elem.classList = ['a', 'b']或elem.classList = 'a b'
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











