推荐使用 dataset api 操作 data- 自定义属性,它自动处理 kebab-case 到 camelcase 转换;也可用 getattribute/setattribute 手动操作,但需注意命名一致性;不可用 element.xxx 访问自定义属性。

在 JavaScript 中,获取和修改节点的自定义属性,推荐使用 dataset API(对应 HTML 中以 data- 开头的属性),它语义清晰、兼容性好(IE11+)、且自动处理驼峰转换;也可用 getAttribute/setAttribute 手动操作,但需注意命名一致性。
用 dataset 读写 data- 属性
dataset 是元素的只读属性,返回一个 DOMStringMap 对象。HTML 中的 data-user-id 会映射为 userId(连字符后字母大写,即 kebab-case → camelCase)。
- 获取:
element.dataset.userId→ 返回字符串,如"123" - 设置:
element.dataset.userId = "456"→ 自动转成data-user-id="456" - 删除:
delete element.dataset.userId→ 移除该data-属性
示例:
const box = document.getElementById('box');
console.log(box.dataset.userId); // "100"
console.log(box.dataset.pageName); // "profile"
box.dataset.userId = "200"; // → data-user-id="200"
box.dataset.newFlag = "true"; // → data-new-flag="true"
用 getAttribute 和 setAttribute 操作任意自定义属性
适用于非 data- 前缀的自定义属性(如 role、my-id),或需要完全控制属性名/值时(比如保留连字符、大小写)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 获取:
element.getAttribute('data-user-id')或element.getAttribute('my-id') - 设置:
element.setAttribute('data-user-id', '300') - 移除:
element.removeAttribute('data-user-id')
注意:getAttribute 区分大小写,且不会自动转换命名格式 —— 写什么名就查什么名。
区分原生属性与自定义属性
不要用 element.xxx(如 element.myId)访问自定义属性,这不可靠:它可能映射到原生属性(如 id、className),也可能根本不存在。自定义属性必须通过 dataset 或 getAttribute 显式读取。
例如:<div my-id="999"></div> 中,div.myId 是 undefined;必须用 div.getAttribute('my-id')。
小技巧:批量读取所有 data 属性
可通过 Object.entries(element.dataset) 转成键值对数组,方便遍历:
const data = Object.fromEntries(Object.entries(element.dataset));
// { userId: "200", pageName: "profile", newFlag: "true" }
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










