Widely available すべての主要ブラウザで対応済み。安心して使用可能。

対応ブラウザ

機能 デスクトップ モバイル
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
7
12
6
5.1
18
5

DOMStringMap インターフェイスは、要素に追加されたカスタム属性のデータを表すために HTMLElement.dataset/SVGElement.dataset 属性で使用されます。

7
12
6
5.1
18
5

MathMLElement インターフェースの dataset read-only プロパティは、要素上のカスタムデータ属性 (data-) への読み書きアクセスを提供する。これは、各 data- 属性のエントリを持つ文字列のマップ(DOMStringMap)を公開します。

109
109
71
13.1
109
13.4

dataset は SVGElement インターフェイスの読み取り専用プロパティで、要素のカスタムデータ属性 (data-) への読み書きアクセスを提供します。これは文字列のマップ (DOMStringMap) を公開し、各 data- 属性の項目を持つ文字列の地図(DOMStringMap)を公開します。

55
17
51
5.1
55
5
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)

基本構文

JAVASCRIPT
const el = document.querySelector("#user");

// el.id === 'user'
// el.dataset.id === '1234567890'
// el.dataset.user === 'carinaanand'
// el.dataset.dateOfBirth === ''

// set a data attribute
el.dataset.dateOfBirth = "1960-10-03";
// Result on JS: el.dataset.dateOfBirth === '1960-10-03'
// Result on HTML: <div id="user" data-id="1234567890" data-user="carinaanand" data-date-of-birth="1960-10-03">Carina Anand</div>

delete el.dataset.dateOfBirth;
// Result on JS: el.dataset.dateOfBirth === undefined
// Result on HTML: <div id="user" data-id="1234567890" data-user="carinaanand">Carina Anand</div>

if (el.dataset.someDataAttr === undefined) {
  el.dataset.someDataAttr = "mydata";
  // Result on JS: 'someDataAttr' in el.dataset === true
  // Result on HTML: <div id="user" data-id="1234567890" data-user="carinaanand" data-some-data-attr="mydata">Carina Anand</div>
}

実務での使いどころ

  • Dataset の活用

    dataset は HTMLElement インターフェイスの読み取り専用プロパティで、要素に設定されたすべてのカスタムデータ属性 (data-*) への読み取り/書き込みアクセスを提供します。

注意点

  • 古いブラウザでは対応していない場合がある。

実装メモ

  • 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。