如何操作data-*属性?

在 JavaScript 中操作 <div> 元素的 data-* 属性(自定义数据属性),可以通过以下方法实现设置、修改、获取和删除操作:


1. 设置 data-* 属性

方法 1:使用 dataset 属性(推荐)

javascript 复制代码
const div = document.querySelector("div");

// 设置单个属性(驼峰命名)
div.dataset.userId = "123";    // HTML: data-user-id
div.dataset.userRole = "admin"; // HTML: data-user-role

// 批量设置属性
Object.assign(div.dataset, {
  userId: "456",
  isActive: "true"
});

方法 2:使用 setAttribute

javascript 复制代码
div.setAttribute("data-user-id", "123");
div.setAttribute("data-user-role", "admin");

2. 修改 data-* 属性

直接对 datasetsetAttribute 重新赋值:

javascript 复制代码
// 通过 dataset 修改
div.dataset.userId = "789"; 

// 通过 setAttribute 修改
div.setAttribute("data-user-id", "789");

3. 获取 data-* 属性

方法 1:使用 dataset(推荐)

javascript 复制代码
console.log(div.dataset.userId);    // 输出: "123"
console.log(div.dataset.userRole);  // 输出: "admin"

方法 2:使用 getAttribute

javascript 复制代码
console.log(div.getAttribute("data-user-id"));   // 输出: "123"
console.log(div.getAttribute("data-user-role")); // 输出: "admin"

4. 删除 data-* 属性

方法 1:使用 delete 操作符(针对 dataset

javascript 复制代码
delete div.dataset.userId;    // 删除 data-user-id
delete div.dataset.userRole;  // 删除 data-user-role

方法 2:使用 removeAttribute

javascript 复制代码
div.removeAttribute("data-user-id");
div.removeAttribute("data-user-role");

完整示例

html 复制代码
<div id="myDiv" data-role="user">示例 DIV</div>

<script>
  const div = document.getElementById("myDiv");

  // 设置属性
  div.dataset.userId = "1001";
  div.setAttribute("data-status", "active");

  // 修改属性
  div.dataset.userId = "1002";
  div.setAttribute("data-status", "inactive");

  // 获取属性
  console.log(div.dataset.userId);          // "1002"
  console.log(div.getAttribute("data-role")); // "user"

  // 删除属性
  delete div.dataset.userId;
  div.removeAttribute("data-status");
</script>

注意事项

  1. 命名规则

    • HTML 中:data-user-id(连字符命名)。
    • JS 中:div.dataset.userId(驼峰命名)。
  2. 数据类型

    • dataset 返回的值始终是字符串,需手动转换类型:

      javascript 复制代码
      const num = parseInt(div.dataset.userId);
      const isActive = div.dataset.isActive === "true";
  3. 兼容性

    • dataset 支持现代浏览器(IE11+),旧浏览器需用 getAttribute/setAttribute

总结

操作 方法 示例
设置属性 div.dataset.key = value div.dataset.userId = "123"
div.setAttribute("data-key", value) div.setAttribute("data-user-id", "123")
修改属性 重新赋值 datasetsetAttribute div.dataset.userId = "456"
获取属性 div.dataset.key console.log(div.dataset.userId)
div.getAttribute("data-key") div.getAttribute("data-user-id")
删除属性 delete div.dataset.key delete div.dataset.userId
div.removeAttribute("data-key") div.removeAttribute("data-user-id")
相关推荐
喜樂的CC1 小时前
[react]Next.js之自适应布局和高清屏幕适配解决方案
javascript·react.js·postcss
天天扭码2 小时前
零基础 | 入门前端必备技巧——使用 DOM 操作插入 HTML 元素
前端·javascript·dom
咖啡虫2 小时前
css中的3d使用:深入理解 CSS Perspective 与 Transform-Style
前端·css·3d
烛阴2 小时前
手把手教你搭建 Express 日志系统,告别线上事故!
javascript·后端·express
拉不动的猪2 小时前
设计模式之------策略模式
前端·javascript·面试
旭久2 小时前
react+Tesseract.js实现前端拍照获取/选择文件等文字识别OCR
前端·javascript·react.js
独行soc3 小时前
2025年常见渗透测试面试题-红队面试宝典下(题目+回答)
linux·运维·服务器·前端·面试·职场和发展·csrf
uhakadotcom3 小时前
Google Earth Engine 机器学习入门:基础知识与实用示例详解
前端·javascript·面试
麓殇⊙3 小时前
Vue--组件练习案例
前端·javascript·vue.js
outstanding木槿3 小时前
React中 点击事件写法 的注意(this、箭头函数)
前端·javascript·react.js