前置知识: HTML5

自定义数据属性

00:00
1 min Beginner 2026/6/14

data-*

1. data-* 属性概述

<div id="user" data-user-id="123" data-role="admin" data-login-count="42">用户信息</div>

命名规则:以 data-,后续只能含小写母、数和连字符

2. JavaScript 访问

dataset 属性

const el = document.getElementById('user');
el.dataset.userId; // "123"(连字符转驼峰)
el.dataset.role; // "admin"
el.dataset.active = 'true'; // 设置
delete el.dataset.role; // 删除

getAttribute / setAttribute

el.getAttribute('data-user-id'); // "123"
el.setAttribute('data-user-id', '456');

3. CSS 访问

[data-role='admin'] {
  background: gold;
}
[data-featured] {
  border: 2px solid blue;
}
.tooltip::after {
  content: attr(data-tooltip);
}

4. 实际应用

<ul id="user-list">
  <li data-user-id="1" data-name="张三">张三</li>
</ul>
document.getElementById('user-list').addEventListener('click', (e) => {
  const li = e.target.closest('li');
  if (li) console.log(`用户: ${li.dataset.name} (ID: ${li.dataset.userId})`);
});

5. 注意事项

  • data-* 始终是字符串,需手动类型转换
  • 建议存储大量数据,大数据用 WeakMap
  • 避免用 innerHTML 输出 data-* (XSS 风险)

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式