diff options
author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-02-15 03:00:20 +0900 |
---|---|---|
committer | potappo <potappo@gmail.com> | 2022-02-19 16:30:31 +0900 |
commit | fa918be3a99e10026f2ce7f1d463391f97fd62bb (patch) | |
tree | 205b7f76101fe6ec6d7580da182f6241974a5dae | |
parent | 21d3adcde768d1b8eba07dcf85d2dd7927a0e506 (diff) | |
download | translated-content-fa918be3a99e10026f2ce7f1d463391f97fd62bb.tar.gz translated-content-fa918be3a99e10026f2ce7f1d463391f97fd62bb.tar.bz2 translated-content-fa918be3a99e10026f2ce7f1d463391f97fd62bb.zip |
2022/02/02 時点の英語版に同期
-rw-r--r-- | files/ja/web/api/htmlelement/dataset/index.md | 180 |
1 files changed, 76 insertions, 104 deletions
diff --git a/files/ja/web/api/htmlelement/dataset/index.md b/files/ja/web/api/htmlelement/dataset/index.md index bfdcffc940..fa97cce7ed 100644 --- a/files/ja/web/api/htmlelement/dataset/index.md +++ b/files/ja/web/api/htmlelement/dataset/index.md @@ -5,85 +5,82 @@ tags: - API - HTML DOM - HTMLElement - - HTMLElement - - Property - - Read-only - - Reference - - SVG - - SVG Custom Attributes - - SVG2 - - SVGElement - - dataset - プロパティ - - 読取専用 + - 読み取り専用 + - リファレンス + - dataset +browser-compat: api.HTMLElement.dataset translation_of: Web/API/HTMLElement/dataset --- -<div>{{APIRef("HTML DOM")}}</div> +{{APIRef("HTML DOM")}} + +**`dataset`** は {{DOMxRef("HTMLElement")}} インターフェイスの読み取り専用プロパティで、要素に設定されたすべての[カスタムデータ属性](/ja/docs/Web/HTML/Global_attributes/data-*) (`data-*`) への読み取り/書き込みアクセスを提供します。これは文字列のマップである ({{domxref("DOMStringMap")}}) で、それぞれの `data-*` 属性の項目です。 + +> **Note:** `dataset` プロパティ自体は読み取ることができますが、直接書き込むことはできません。代わりに、すべての書き込みは `dataset` 内の個々のプロパティに対して行う必要があり、それは data 属性を表します。 + +また、 HTML の `data-*` 属性とそれに対応する DOM `dataset.プロパティ` は同じ名前にはなりませんが、次のように常に近いものになります。 + +- HTML では + - : 属性の名前は、 `data-` で始まります。文字、数字、ダッシュ (`-`)、ドット (`.`)、コロン (`:`)、アンダースコア (`_`) のみを入れることができます。 ASCII 大文字の `A` から `Z` は小文字に変換されます。 +- JavaScript では + - : カスタムデータ属性のプロパティ名は、同じ HTML 属性の名前から `data-` の接頭辞を除いたものですが、そのプロパティのキャメルケース (camelCase) の名前であり、単一のダッシュ (`-`) を除いたものです。 -<p><span class="seoSummary"><strong><code>dataset</code></strong> は {{DOMxRef("HTMLElement")}} インターフェイスのプロパティで、要素に設定されたすべての<a href="/ja/docs/Web/HTML/Global_attributes#attr-data-*">カスタムデータ属性</a> (<code>data-*</code>) への読み取り/書き込みアクセスを提供します。</span> このアクセスは、 HTML と DOM の両方の中で利用できます。これは {{domxref("DOMString")}} のマップ ({{domxref("DOMStringMap")}}) で、1つのカスタムデータ属性が1つのエントリに対応します。なお、 <code>dataset</code> プロパティ自体は読み取ることができますが、直接書き込むことはできません。代わりに、すべての書き込みは <code>dataset</code> 内の個々のプロパティに対して行われる必要があり、それはデータ属性を表します。また、 HTML の <strong><code>data-</code></strong><em>属性</em>とそれに対応する DOM <code>dataset.</code><em>プロパティ</em> は同じ名前を共有しませんが、次のように常に近いものになります。</p> +以下の情報に加えて、[データ属性の使用](/ja/docs/Learn/HTML/Howto/Use_data_attributes)の記事に、HTML データ属性の使用方法に関するガイドがあります。 -<ul> - <li>HTML のカスタムデータ属性の名前は、 <code>data-</code> で始まります。 文字、数字、およびダッシュ (<code>-</code>)、ドット (<code>.</code>)、コロン (<code>:</code>)、アンダースコア (<code>_</code>) のみを含める必要がありますが、 ASCII 大文字の <code>A</code> から <code>Z</code> は使用できません。</li> - <li>JavaScript のカスタムデータ属性の名前は、同じ HTML 属性の名前ですが、キャメルケース (camelCase) であり、ダッシュ、ドットなどは含みません。</li> -</ul> +### 名前の変換 -<p>以下の情報に加えて、<a href="/ja/docs/Learn/HTML/Howto/Use_data_attributes">データ属性の使用</a>の記事に、HTML データ属性の使用方法に関するガイドがあります。</p> +- ダッシュスタイルからキャメルケースへの変換 -<h3 id="Name_conversion" name="Name_conversion">名前変換</h3> + - : カスタムデータ属性名は、次のルールに従って {{ domxref("DOMStringMap") }} 項目のキーに変換されます。 -<p><strong>ダッシュスタイルからキャメルケースへ:</strong> カスタムデータ属性名は、次のルールに従って {{ domxref("DOMStringMap") }} エントリのキーに変換されます。</p> + 1. すべての ASCII の大文字 (`A` から `Z` まで) を小文字にします。 + 2. 接頭辞の `data-` を(ダッシュを含め)削除します。 + 3. ダッシュ (`U+002D`) に ASCII 小文字の `a` から `z` が続く場合、ダッシュを削除し、その文字を対応する大文字に変換します。 + 4. 他の文字 (他のダッシュを含む) は変更しません。 -<ul> - <li>プレフィックスの <code>data-</code> が (ダッシュを含め) 削除されます。</li> - <li>ダッシュ (<code>U+002D</code>) に ASCII 小文字の <code>a</code> から <code>z</code> が続く場合、ダッシュは削除され、文字は対応する大文字に変換されます。</li> - <li>他の文字 (他のダッシュを含む) は変更されません。</li> -</ul> +- キャメルケースからダッシュスタイルへの変換 -<p><strong>キャメルケースからダッシュスタイルへ:</strong> キーを属性名にマッピングする逆の変換では、次のルールが使用されます。</p> + - : キーを属性名にマッピングする逆の変換では、以下のように次のルールが使用されます。 -<ul> - <li>制約事項: ダッシュの直後に ASCII 小文字 <code>a</code> から <code>z</code> を続けてはなりません (変換前)。</li> - <li>接頭辞として <code>data-</code> が追加されます。</li> - <li>ASCII 大文字の <code>A</code> から <code>Z</code> は、ダッシュと、その後に対応する小文字が続くものに変換されます。</li> - <li>他の文字は変更されません。</li> -</ul> + 1. **制約事項:** 変換前に置いて、ダッシュの直後に ASCII 小文字 `a` から `z` を続けてはなりません。 + 2. 接頭辞として `data-` が追加されます。 + 3. ASCII 大文字の `A` から `Z` は、ダッシュと、その後に対応する小文字が続くものに変換されます。 + 4. 他の文字は変更しません。 -<p>上記の規則の制約事項により、2つの変換が互いに逆変換になります。</p> +例えば、`data-abc-def` という名前の属性は、キー `abcDef` に対応します。 -<p>例えば、<code>data-abc-def</code> という名前の属性は、キー <code>abcDef</code> に対応します。</p> +### 値へのアクセス -<ul> -</ul> +- 属性は dataset のオブジェクトプロパティのようにキャメルケース名 (キー) を使用して、 `element.dataset.keyname` のように設定したり読み取ったりすることができます。 +- 属性はブラケット構文を使用して、 `element.dataset['keyname']` のように設定したり読み取ったりすることもできます。 +- [`in` 演算子](/ja/docs/Web/JavaScript/Reference/Operators/in)を使用して、特定の属性が存在するかどうかを確認できます。 -<h3 id="Accessing_values" name="Accessing_values">値へのアクセス</h3> +### 値の設定 -<ul> - <li>属性は dataset のオブジェクトプロパティのようにキャメルケース名 (キー) を使用して、 <code><em>element.</em>dataset.<em>keyname</em></code> のように設定したり読み取ったりすることができます。</li> - <li>属性はブラケット構文を使用して、 <code><em>element.</em>dataset[<em>keyname</em>]</code> のように設定したり読み取ったりすることもできます。</li> - <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a>を使用して、特定の属性が存在するかどうかを確認できます。</li> -</ul> +- 属性が設定されると、その値は常に文字列に変換されます。 -<h3 id="Setting_values" name="Setting_values">値の設定</h3> + 例えば、 `element.dataset.example = null` は `data-example="null"` に変換されます。 -<ul> - <li>属性が設定されると、その値は常に文字列に変換されます。 例えば、<code>null</code> は文字列 "null" に変換されます。</li> - <li>属性を削除する場合は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code> 演算子</a>を使用できます。</li> -</ul> +- 属性を削除する場合は、[`delete` 演算子](/ja/docs/Web/JavaScript/Reference/Operators/delete)を使用できます。 -<h2 id="Syntax" name="Syntax">構文</h2> +## 構文 -<pre class="syntaxbox">const <em>dataAttrMap</em> = <em>element</em>.dataset -</pre> +```js +const dataAttrMap = element.dataset +``` -<h3 id="Value" name="Value">値</h3> +### 値 -<p>{{domxref("DOMStringMap")}} です。</p> +{{domxref("DOMStringMap")}} です。 -<h2 id="Examples" name="Examples">例</h2> +## 例 -<pre class="brush: html"><div id="user" data-id="1234567890" data-user="johndoe" data-date-of-birth>John Doe</div></pre> +```html +<div id="user" data-id="1234567890" data-user="johndoe" data-date-of-birth>John Doe</div> +``` -<pre class="brush: js">const el = document.querySelector('#user'); +```js +const el = document.querySelector('#user'); // el.id === 'user' // el.dataset.id === '1234567890' @@ -92,55 +89,30 @@ translation_of: Web/API/HTMLElement/dataset // データ属性の設定 el.dataset.dateOfBirth = '1960-10-03'; -// 結果: el.dataset.dateOfBirth === 1960-10-03 +// JS での結果: el.dataset.dateOfBirth === '1960-10-03' +// HTML での結果: <div id="user" data-id="1234567890" data-user="johndoe" data-date-of-birth="1960-10-03">John Doe</div> delete el.dataset.dateOfBirth; -// 結果: el.dataset.dateOfBirth === undefined - -// 'someDataAttr' in el.dataset === false -el.dataset.someDataAttr = 'mydata'; -// 結果: 'someDataAttr' in el.dataset === true -</pre> - -<h2 id="Specifications" name="Specifications">仕様書</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - <th scope="col">状態</th> - <th scope="col">備考</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('HTML WHATWG', "dom.html#dom-dataset", "HTMLElement.dataset")}}</td> - <td>{{Spec2('HTML WHATWG')}}</td> - <td>最新のスナップショットである {{SpecName('HTML5.1')}} から変更なし</td> - </tr> - <tr> - <td>{{SpecName('HTML5.1', "dom.html#dom-dataset", "HTMLElement.dataset")}}</td> - <td>{{Spec2('HTML5.1')}}</td> - <td>{{SpecName('HTML WHATWG')}} のスナップショット、 {{SpecName('HTML5 W3C')}} からの変更なし</td> - </tr> - <tr> - <td>{{SpecName('HTML5 W3C', "dom.html#dom-dataset", "HTMLElement.dataset")}}</td> - <td>{{Spec2('HTML5 W3C')}}</td> - <td>{{SpecName('HTML WHATWG')}} のスナップショット、初回定義</td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> - -<p>{{Compat("api.HTMLElement.dataset")}}</p> - -<div class="hidden">Please change the compat macro's paramter to <code>api.HTMLElement.dataset</code> after BCD is updated.</div> - -<h2 id="See_also" name="See_also">関連情報</h2> - -<ul> - <li>HTML の <code><a href="/ja/docs/Web/HTML/Global_attributes/data-*"><strong>data-*</strong></a></code> クラスのグローバル属性</li> - <li><a href="/ja/docs/Learn/HTML/Howto/Use_data_attributes">データ属性の使用</a></li> - <li>{{domxref("Element.getAttribute()")}} および {{domxref("Element.setAttribute()")}}</li> -</ul> +// JS での結果: el.dataset.dateOfBirth === undefined +// HTML での結果: <div id="user" data-id="1234567890" data-user="johndoe">John Doe</div> + +if ('someDataAttr' in el.dataset === false) { + el.dataset.someDataAttr = 'mydata'; + // JS での結果: 'someDataAttr' in el.dataset === true + // HTML での結果: <div id="user" data-id="1234567890" data-user="johndoe" data-some-data-attr = "mydata">John Doe</div> +} +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- HTML の [`data-*`](/ja/docs/Web/HTML/Global_attributes/data-*) クラスのグローバル属性 +- [データ属性の使用](/ja/docs/Learn/HTML/Howto/Use_data_attributes) +- {{DOMxRef("Element.getAttribute()")}} および {{DOMxRef("Element.setAttribute()")}} |