JavaScriptでDOM要素にクラスを追加する
JavaScriptでDOM要素にクラスを追加する方法
JavaScriptでは、**DOM (Document Object Model)**要素にクラスを追加するために、classList
プロパティを使用します。このプロパティは、要素に関連付けられたクラス名のリストを提供します。
classList
プロパティのメソッド
- contains()
指定したクラス名が要素に存在するかどうかをブール値で返します。 - toggle()
指定したクラス名が要素に存在する場合には削除し、存在しない場合には追加します。 - remove()
指定したクラス名を要素から削除します。 - add()
指定したクラス名を要素に追加します。
例
// HTML要素を取得
const element = document.getElementById("myElement");
// クラスを追加
element.classList.add("newClass");
// クラスを削除
element.classList.remove("oldClass");
// クラスを切り替える
element.classList.toggle("activeClass");
この例では、myElement
というIDを持つ要素を取得し、その要素にnewClass
というクラスを追加しています。また、oldClass
を削除し、activeClass
を切り替えています。
注意
className
プロパティもクラスを操作するために使用できますが、classList
プロパティよりも使い勝手が良く、パフォーマンスも優れています。classList
プロパティは、HTML5で導入されたものです。古いブラウザではサポートされていない場合があります。
コード例
// HTML要素を取得
const element = document.getElementById("myElement");
// クラスを追加
element.classList.add("newClass");
// クラスを削除
element.classList.remove("oldClass");
// クラスを切り替える
element.classList.toggle("activeClass");
コードの解説
const element = document.getElementById("myElement");
- この行は、HTMLドキュメントからIDが"myElement"である要素を取得し、変数
element
に代入しています。 document.getElementById()
は、指定したIDを持つ最初の要素を返すメソッドです。
- この行は、HTMLドキュメントからIDが"myElement"である要素を取得し、変数
element.classList.add("newClass");
- この行は、変数
element
に格納された要素に、"newClass"というクラスを追加します。 classList
は、要素に関連付けられたクラス名のリストを表すプロパティです。
- この行は、変数
- この行は、変数
element
に格納された要素に、"activeClass"というクラスが存在する場合には削除し、存在しない場合には追加します。 toggle()
メソッドは、クラスの存在有無を切り替えます。
- この行は、変数
具体的な動作
クラスの切り替え
クラスの削除
remove()
メソッドによって、要素のclass
属性から指定されたクラス名が削除されます。
add()
メソッドによって、要素のclass
属性に新しいクラス名が追加されます。
classList
プロパティを使用することで、JavaScriptでDOM要素のクラスを簡単に操作できます。add()
、remove()
、toggle()
メソッドを使い分けることで、動的に要素のスタイルを変更することができます。
応用例
- 動的なコンテンツの生成時に、要素に適切なクラスを付与する
- 要素の状態に応じてクラスを切り替えて、異なるスタイルを適用する
- ユーザーの操作に応じて要素の表示/非表示を切り替える
- クラスの存在を確認する
if (element.classList.contains("myClass")) { // クラスが存在する場合の処理 }
- 複数のクラスを追加する
element.classList.add("class1", "class2", "class3");
classNameプロパティを用いる方法
- 特徴
classList
プロパティより歴史が長く、すべてのブラウザでサポートされています。- クラス名の文字列全体を直接操作するため、柔軟性が高い一方で、誤った操作で意図しない結果になる可能性があります。
const element = document.getElementById("myElement");
element.className = "newClass"; // 既存のクラスをすべて置き換える
// 既存のクラスを残しつつ、新しいクラスを追加する
element.className += " newClass";
- 注意点
- 既存のクラスをすべて置き換えたい場合や、クラス名の文字列操作が必要な場合に適しています。
- 複数のクラスを扱う場合、スペースで区切る必要があるため、誤った操作で既存のクラスが削除されてしまう可能性があります。
setAttribute()メソッドを用いる方法
- 特徴
- DOM要素の属性を直接設定する汎用的な方法です。
classList
プロパティが利用できない環境でも使用できます。
const element = document.getElementById("myElement");
element.setAttribute("class", "newClass");
- 注意点
classList
プロパティよりも冗長な記述になります。classList
プロパティが利用できる場合は、そちらを使用することを推奨します。
jQueryを用いる方法
- 特徴
- jQueryは、JavaScriptのDOM操作を簡潔に記述できるライブラリです。
addClass()
メソッドで簡単にクラスを追加できます。
$("#myElement").addClass("newClass");
- 注意点
- jQueryを導入する必要があります。
方法 | 特徴 | コード例 | 注意点 |
---|---|---|---|
classList.add() | シンプル、効率的 | element.classList.add("newClass"); | HTML5以降でサポート |
className | 柔軟性が高い | element.className = "newClass"; | 誤った操作で既存のクラスが削除される可能性 |
setAttribute() | 汎用的 | element.setAttribute("class", "newClass"); | 冗長 |
jQueryのaddClass() | 簡潔 | $("#myElement").addClass("newClass"); | jQueryの導入が必要 |
どの方法を選ぶべきか?
- 古いブラウザのサポートが必要な場合
className
プロパティまたはsetAttribute()
メソッドを使用します。 - jQueryを使用している場合
addClass()
メソッドが便利です。 - 既存のクラスをすべて置き換えたい場合
className
プロパティが便利です。 - 一般的に
classList.add()
が最もシンプルで効率的です。
setAttribute()
メソッドは、class
属性だけでなく、他の属性も設定できます。className
プロパティは、複数のクラスをスペースで区切って指定できます。classList
プロパティは、contains()
、remove()
、toggle()
などの便利なメソッドも提供しています。
javascript dom