JavaScript

【JavaScript】HTMLからJavaScriptに処理用のデータを渡す(data属性)

HTML+JavaScriptで処理を行う際、HTML要素からJavaScriptにデータを渡したいことがあります。この記事ではHTMLとJavaScript間で処理用のデータを受け渡しできるdata属性(カスタムデータ属性)を紹介します。

この記事で分かること
  • JavaScript側で使用するデータはdata属性(カスタムデータ属性)を使って渡す
  • data属性は参照だけでなく追加・更新も可能

data属性とは?使用方法は?

data属性(カスタムデータ属性)とは・・・

HTML要素(タグ)にスクリプト側で使用する値を持たせておくための機能。HTML要素にdata-から始まる任意の名前で記述できる。data属性の値は画面表示されない。

※類似機能としてsetAttribute/getAttributeがあるが、data属性を使用したほうがコードがスッキリします

HTML側の記述

HTMLタグ内にdata-*の形式で記述します。*の部分は任意の文字列を設定可能です。複数のdata属性を設定可能です。

<div data-id="001" 
     data-test="ta" 
     data-hoge-val1="ほ" 
     data-hoge-val2="げ">

 <!-- 中身は省略 -->

</div>

上記はidtesthoge-val1hoge-val2というdata属性をdivタグに設定しています。

JavaScriptからのアクセス

対象のHTML要素のDOMより、dataset.ハイフン以降の名前の形式でアクセスします。

参照

// data-idを参照する場合
要素のDOM.dataset.id

// data-hoge-val1を参照する場合
要素のDOM.dataset.hogeVal1

 

data-hoge-val1のように名称内にを使用した場合はキャメルケース(区切りの先頭を大文字にする)で記述します。

更新

値の更新も可能です。以降は更新後の値で動作します。

// 値の更新
要素のDOM.dataset.id="hoge";

 

追加

スクリプト側から新しいdata属性を付与することも可能です。

// スクリプト側で新たにdata属性を追加
要素のDOM.dataset.newdata = "ほげほげ";

記述は更新と変わりありません。上記例では、以降dataset.newdataで参照が可能となります。

使用イメージ(ユースケース)

例えば、一覧画面と情報編集画面からなるシステムなど。

一覧にはid(主キー)を表示したくないが、画面間の情報伝達はidのみとし、編集画面ではidを基に処理を行う場合。

→ idを一覧上の項目要素(divとかliとか)にdata属性で保持しておき、スクリプト側で使用する

 

COMMENT

メールアドレスが公開されることはありません。

CAPTCHA