データセット属性について
データセット属性について試してみます。
データセット属性はHTMLドキュメントに対して、標準外の属性を定義し、その定義した属性を
javascript側で取得し使用することができます。
実際にどんな挙動になるのか、以下かんたんなHTMLドキュメントのサンプルを書いて試してみました。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>テストHTML</title> </head> <body> <div id="test1"> <div id="p1" name="p1name" data-testdata1="aaa" data-testdata2="bbb" data-testdata3="ccc"> p1text </div> </div> <script type="text/javascript"> // ID「p1」の要素を取得 let test1 = document.getElementById("p1"); // 取得した内容を確認 console.log("test1 -> " + test1); // 取得したデータセット属性の値を確認 console.log("testdata1 -> " + test1.dataset.testdata1); console.log("testdata2 -> " + test1.dataset.testdata2); console.log("testdata3 -> " + test1.dataset.testdata3); </script> </body> </html>
実行した結果は
test1 -> [object HTMLDivElement] testdata1 -> aaa testdata2 -> bbb testdata3 -> ccc
という結果になります。
HTMLドキュメントとして定義した
<div id="p1" name="p1name" data-testdata1="aaa" data-testdata2="bbb" data-testdata3="ccc"> p1text </div>
という箇所の「data-testdata1=”aaa”」の部分がデータセット属性になります。
データセット属性を取得するときは
test1.dataset.testdata1
というように、「(取得した)DOMオブジェクト.dataset.定義名」という、データセットプロパティを使用し、値を取得します。
データセット属性に値をセットする
上記のサンプルではデータセット属性の値を取得しましたが、その反対に値をデータセット属性に対してセットすることもできます。
以下のサンプルで試してみます。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>テストHTML</title> </head> <body> <div id="test1"> <div id="p1" name="p1name" data-testdata1="aaa" data-testdata2="bbb" data-testdata3="ccc"> p1text </div> </div> <script type="text/javascript"> let test1 = document.getElementById("p1"); test1.dataset.testdata1 = "ddd"; </script> </body> </html>
上記の画面にアクセスすると、データセット属性に値を代入された後のHTMLドキュメントになっていることがわかります。
具体的には、以下のHTMLソースになっていることを確認しました。(ブラウザの開発者ツールで確認)
<html lang="ja"><head> <meta charset="UTF-8"> <title>テストHTML</title> </head> <body> <div id="test1"> <div id="p1" name="p1name" data-testdata1="ddd" data-testdata2="bbb" data-testdata3="ccc"> p1text </div> </div> <script type="text/javascript"> // ID「p1」の要素を取得 let test1 = document.getElementById("p1"); // データセット属性のtestdata1に対して値を代入 test1.dataset.testdata1 = "ddd"; </script> </body> </html>
javascript実行前は「data-testdata1=”aaa”」でしたが、実行後に「data-testdata1=”ddd”」という値に書き変わっています。
データセット属性の注意点
データセット属性についての注意点をまとめます。
・属性名は小文字で記述する必要あり
・HTMLのDOM構造として使用し、見た目には影響を及ぼさない
・属性名にハイフンが含まれる場合は、アクセス時(マップ時)にキャメルケースを使用する