JavaScript 样式操作:className 与 classList 的对比

classList 更安全灵活,适合增删改查类名;className 直接替换字符串,易误覆盖。现代开发推荐优先使用 classlist,兼容性良好,代码更健壮清晰。

JavaScript 样式操作:className 与 classList 的对比

javaScript 中操作元素的 css 类是日常开发中的常见需求。最常用的方式是通过 classNameclassList 来实现。虽然两者都能达到修改类名的目的,但在使用方式和功能上存在明显差异。

className:直接操作类名字符串

className 是一个属性,表示元素的 class 属性值,本质是一个字符串。通过它可以直接读取或设置整个 class 值。

说明:

  • 读取时返回当前所有类名组成的字符串,以空格分隔。
  • 赋值时会完全替换原有类名,容易误删已有类。
  • 适合一次性设置全部类名,不适合增删单个类。

示例:

假设 html 元素为:
<div id="box" class="header active"></div>
使用 javascript

const el = document.getElementById('box'); console.log(el.className); // 输出 "header active" el.className = 'highlight'; // 原有类被全部替换 

classList:现代的类名操作 API

classList 是一个 DOMTokenList 对象,提供了一系列方法来更安全地操作类名,不会影响其他已存在的类。

JavaScript 样式操作:className 与 classList 的对比

标书对比王

标书对比王是一款标书查重工具,支持多份投标文件两两相互比对,重复内容高亮标记,可快速定位重复内容原文所在位置,并可导出比对报告。

JavaScript 样式操作:className 与 classList 的对比12

查看详情 JavaScript 样式操作:className 与 classList 的对比

常用方法:

  • add(‘class’):添加一个或多个类名。
  • remove(‘class’):移除一个或多个类名。
  • toggle(‘class’):切换类名(存在则删除,不存在则添加)。
  • contains(‘class’):判断是否包含某个类名。

示例:

同样元素:<div id="box" class="header active"></div>

立即学习Java免费学习笔记(深入)”;

const el = document.getElementById('box'); el.classList.add('highlight');     // 类变为 "header active highlight" el.classList.remove('active');     // 类变为 "header highlight" el.classList.toggle('open');       // 添加 open 类 el.classList.contains('header');   // 返回 true 

对比总结

  • 安全性:classList 更安全,避免误覆盖;className 直接替换,风险高。
  • 灵活性:classList 提供丰富方法,适合动态控制;className 需手动拆分拼接字符串,麻烦且易错。
  • 兼容性:className 所有浏览器都支持;classList 在 IE10+ 支持,现代项目通常无问题。
  • 性能:两者性能差异极小,实际开发中可忽略。

基本上就这些。对于现代前端开发,推荐优先使用 classList,代码更清晰、健壮。只有在需要完全重置类名时,才考虑使用 className。

上一篇
下一篇
text=ZqhQzanResources