JavaScriptで属性を操作する方法まとめ

2021年2月23日JavaScript

JavaScriptで属性を操作する方法まとめました。

要素の属性を操作する

DOMではいくつかの値以外は、属性と同じプロパティが用意されています。

たとえば、下の例では、alt属性を指定するために、JavaScriptでもaltとして、そのまま使えています。

MDNのCSS プロパティリファレンスで詳しく何が使えるかを確認できます。


  'use strict';

  {
//Attribute
const logo = document.querySelector('.nav__logo');
console.log(logo.alt);//alt属性が返ってくる
logo.alt = 'カエルの写真';//とすると
console.log(logo.alt);//カエルの写真が返ってくる
}

getAttibute()



console.log(logo.getAttribute('alt'));//カエルの写真

getAttibute()で属性を指定するとその値が返されます。



console.log(logo.src);//画像のURLが絶対パスでてくる(相対パスで指定していても絶対パスで返される)
console.log(logo.getAttribute('src'));//src='相対パス'で指定している相対パスが返される。

また、このように、src属性の登録したままの値を取得したい場合は、getAttribute()を使います。

setAttribute()



      const button = document.querySelector('#inc');
      console.log(button.setAttribute('color', 'green')); //属性とその値をセットする
      console.log(button); //<button id="inc" color="green">ボタン</button>
      console.log(button.getAttribute('color')); //green

setAttribute()で属性を挿入することができます。第一引数が属性、第二引数にその値を記述します。
また上の例のようにカスタムで作った属性でもgetAttribute()は値を返します。
クラスを変更するときは、一般的にはclassListを使います。

カスタムデータ属性を操作する

datasetとキャメルケース

htmlでは、data-から始まっていれば、オリジナルの属性を作ることができます。

以下のh2見出しを英訳したいとしましょう。
data-englishという名前のカスタム属性をつくったとしましょう。

その場合、カスタム属性は他と同じように、
eventNode.textContent = eventNode.data-englishとして操作することはできません。
カスタムデータ属性の場合は、dataset.englishという形になります。
次の例をみてみましょう。


<h2 
 id="event"
 data-version-number="7.0"
 data-english="Handle Custom Data Arrtibutes"
 >カスタムデータ属性を扱う</h2>
<button>クリック</button>
'use strict';
{

document.querySelector('button').addEventListener('click', () => {
    const eventNode = document.getElementById('event');
    eventNode.textContent = eventNode.dataset.english;
  });
   
 //キャメルケースで記述する
 console.log(logo.dataset.versionNumber);// 7.0 
}

「data-version-number="7.0″」とハイフンケースでつなげているときは、JavaScirptで指定するときにキャメルケースにする必要があります。