JavaScriptでdata属性が取得できない
HTML文書のdata属性値を取得する際ちょっとハマったのでメモ。
<p id="text" data-Text="取得!">data</p>上記のdata属性値を取得しようとするとエラーとなった。
const p = document.getElementById('text');
p.addEventListener('click', (e) => { const data = e.target.dataset.Text; console.log(data); //undefined});e.target.dataset.TextのTextと大文字にしたのが原因で、HTML文書に指定したdata-のあとの大文字小文字に関係なく、jsで取得するときは小文字にする。
//undefinedになるconst data = e.target.dataset.Text;
//undefinedにならないconst data = e.target.dataset.text;data属性値が取得できなくてちょっと悩んでたけど、MDNに答えが載ってた。
HTML では
属性の名前は、data-で始まります。文字、数字、ダッシュ (-)、ドット (.)、コロン (:)、アンダースコア (_) のみを入れることができます。ASCII 大文字のAからZは小文字に変換されます。