HTML5 引入 data-* 全局屬性,允許在標準標籤上攜帶私有數據,配合 JavaScript dataset 屬性可方便讀寫。本文詳細介紹用法與注意事項。
<div id="user" data-id="1001" data-role="admin" data-last-login="2024-01-15">用戶卡片</div>
data- 開頭data-userName → dataset.userName)const el = document.getElementById('user');
// 讀取:自動轉駝峰
console.log(el.dataset.id); // "1001" (字符串)
console.log(el.dataset.role); // "admin"
console.log(el.dataset.lastLogin); // "2024-01-15"
// 寫入
el.dataset.newProp = 'value'; // 生成 data-new-prop="value"
el.dataset.userName = '張三'; // 生成 data-user-name="張三"
// 刪除
delete el.dataset.role; // 移除 data-role 屬性
[data-role="admin"] { border: 2px solid gold; }
[data-active] { opacity: 1; }
data-json='{...}',前端 JSON.parse(el.dataset.json)<button data-action="delete" data-id="123">data-toggle="tooltip" (Bootstrap)data-track="click:button:submit"JSON.stringifydataset 會觸發屬性重解析,高頻場景建議用 getAttribute/setAttribute 或單獨 JS 變量data-user-id),JS 中自動轉駝峰(dataset.userId)善用 data-* + dataset,能讓 HTML 與 JavaScript 交互更語義化、結構化。