home
twitter
ページトップへ
目次
  • そもそも「クラス属性」って何?
  • 「JavaScript」から「クラス属性の値」を操作する方法にはどんなものがあるのか?
  • 「Element.className」でクラスを取得・設定する
  • 既存のクラスがすべて上書きされる
  • 上書き問題の解決方法!
  • 「Element.classList」で「クラス属性の値」を操作をする方法!
  • 「classList.add()」でクラスの追加
  • 「classList.remove()」でクラスの消去
  • 「classList.contains()」でクラスの存在を確認
  • 「classList.toggle()」でクラスの付けは外し
  • 参考リンク!
  • おすすめの再生リスト!
  • まとめ!
about
categories
page
archive
皇帝ペンギンブログ

2024/12/03 (更新日:2024/12/03)

【JavaScript】要素のクラス属性の値を操作する方法!【className, classList, add(), remove(), contains(), toggle()】

Categories > JavaScriptの入門編
こんばんは!初めましての方は初めまして!
しゅーた(@chibasyuta)です!

こんにちは!今回は「JavaScript」を使って「HTML要素のクラス属性の値」を「操作する方法」について解説します。「クラス属性の値」の操作をすることで予め用意しておいたスタイルを簡単に適用することができ、動的なwebサイトを作ることができます。

この記事では以下の内容を扱います。

この記事の内容!

  • Element.className を使ったクラスの操作
  • Element.classList を使ったクラスの操作
  • add()
  • remove()
  • contains()
  • toggle()
また、下の動画でも「JavaScript」で「要素のクラス属性の値を操作する方法」について詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!

それでは内容へ入ります!

目次
非表示
  • そもそも「クラス属性」って何?
  • 「JavaScript」から「クラス属性の値」を操作する方法にはどんなものがあるのか?
  • 「Element.className」でクラスを取得・設定する
  • 既存のクラスがすべて上書きされる
  • 上書き問題の解決方法!
  • 「Element.classList」で「クラス属性の値」を操作をする方法!
  • 「classList.add()」でクラスの追加
  • 「classList.remove()」でクラスの消去
  • 「classList.contains()」でクラスの存在を確認
  • 「classList.toggle()」でクラスの付けは外し
  • 参考リンク!
  • おすすめの再生リスト!
  • まとめ!

そもそも「クラス属性」って何?

HTMLの要素にはclass属性があり、CSSでスタイルを適用するためのラベルのような役割を持ちます。例えば以下のように使います。
<div class="box"></div>

このように、boxというクラスを付与することで、CSSファイルに書いたスタイルを要素に適用することが可能です。

「JavaScript」から「クラス属性の値」を操作する方法にはどんなものがあるのか?

「JavaScript」から「クラス属性の値」を操作する方法には下記があります。

  • Element.className
  • Element.classList

この記事ではこの2つの方法を扱います。

「Element.classList.add()」などがある「Element.classList」がよく使われる方法ですかね。見たこともあると思います。

「Element.className」でクラスを取得・設定する

// 要素を取得
const element = document.querySelector('.box');

// 現在のクラス名を取得
console.log(element.className); // "box"

// クラス名を変更
element.className = 'new-class';
console.log(element.className); // "new-class"

このように「Element.className」を使うことで、現在ついている「クラス属性の値」を取得したり、

再代入を行うことで、「クラス属性の値の変更」ができます。

既存のクラスがすべて上書きされる

<div class="box active">Hello World!</div>

<script>
  // 要素を取得
  const element = document.querySelector('.box');
  
  // 現在のクラス名を取得
  console.log(element.className); // "box active"
  
  // 新しいクラスを設定
  element.className = 'bg-pink';

  // 結果として、"box"と"active"が消え、新しいクラス"bg-pink"だけが設定される
  console.log(element.className); // "bg-pink"
</script>

classNameを直接変更すると、既存のクラスがすべて上書きされるため注意が必要です。

なので「bg-pink」というクラスを追加したい場合でも、既存のクラスである「box active bg-pink」のように結果的に存在してほしいクラス属性の値を全て書き込む必要があります。

上書き問題の解決方法!

// 要素を取得
const element = document.querySelector('.box');

// 既存のクラスを保持しつつ、新しいクラスを追加
element.className += ' bg-pink';

// クラス名は "box active bg-pink" になる
console.log(element.className); // "box active bg-pink"

このように「文字列の連結」を上手く使うことで、上書き問題を解決することができます。

「スペースもしっかり加えてあげることに注意してください。

もしくは、しっかり全て書くか、「Element.classList.add()」かですかね。

「Element.classList.add()」の使い方の解説ついては後述します!

特定のクラス属性の値を追加する場合は「classList」を使用するのがベストプラクティスです。

「Element.classList」で「クラス属性の値」を操作をする方法!

「Element.classList」で「クラス属性の値」を操作をする方法についてまとめます!

実際に使えるのは下記の命令です。

  • Element.classList.add()
  • Element.classList.remove()
  • Element.classList.contains()
  • Element.classList.toggle()

では、これらの使い方の詳細の解説をしますね!

「classList.add()」でクラスの追加

element.classList.add('bg-pink');
console.log(element.className); // "box bg-pink"

「classList.add()」で「クラスの追加」ができます。複数のクラスを一度に追加する場合は、カンマ区切りで第二引数,第三引数と増やせばOKです!

すでに存在するクラスを追加してもエラーにはなりません。

「classList.remove()」でクラスの消去

<div class="box bg-pink"></div>
element.classList.remove('box');
console.log(element.className); // "bg-pink"

「classList.remove()」で「指定したクラスを削除する」ことができます。複数のクラスを一度に削除する場合は、カンマ区切りで第二引数,第三引数と増やせばOKです!

指定したクラスが存在しない場合でもエラーは発生しません。

「classList.contains()」でクラスの存在を確認

<div class="box"></div>
console.log(element.classList.contains('box')); // true
console.log(element.classList.contains('bg-pink')); // false

「classList.contains()」で「クラスの存在」を確認することができます。

「true」か「false」が返ってくるので、それで条件分岐処理などに繋げることができますね。

「classList.toggle()」でクラスの付けは外し

button.addEventListener('click', () => {
  box.classList.toggle("bg-pink");
});

「classList.toggle()」を使うことで「クラスの付けは外し」ができます。

既にクラスがついていたら、そのクラスを削除し

クラスがついていなかったら、クラスを追加します。

これ便利だね!

参考リンク!

仕様書。
https://dom.spec.whatwg.org/#ref-for-dom-element-classlist%E2%91%A0

https://dom.spec.whatwg.org/#ref-for-dom-element-classname%E2%91%A0

MDN。
https://developer.mozilla.org/ja/docs/Web/API/Element/classList

https://developer.mozilla.org/ja/docs/Web/API/Element/className

おすすめの再生リスト!

こちらは僕が制作したYouTubeの再生リスト「JavaScriptの入門編」です。

「JavaScriptの入門編」はWeb制作を勉強している方がJavaScriptに入門する際に知っておきたい情報をまとめたコンテンツとなります。

こちらの再生リストで「JavaScript」について「丁寧」に解説しているので、もし気になる方はチェックしてみてください!一緒に楽しく学習しましょう!!

まとめ!

HTMLの要素にはclass属性があり、CSSでスタイルを適用するためのラベルのような役割を持ちます。

「JavaScript」から「クラス属性の値」を操作する方法には下記があります。

  • Element.className
  • Element.classList

classNameはクラスを文字列で直接設定・取得する方法。

classListは、クラスの追加・削除・確認・切り替えを柔軟に行える便利なプロパティ。

「classList」で実際に使える命令には下記がある。

  • Element.classList.add()
  • Element.classList.remove()
  • Element.classList.contains()
  • Element.classList.toggle()
また、下の動画でも「JavaScript」で「要素のクラス属性の値を操作する方法」について詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!

これらの操作を使いこなすことで、インタラクティブで魅力的なウェブサイトを作ることができます!

ぜひ、この記事を参考にして、実際にコードを書いてみてくださいね。

ではまたっ!

自分のロゴ!

皇帝ペンギン

全力で、書きます。
少しでもお役に立てたら幸いです。
楽しんで読んで下さい 。-_- 。
よろしくお願いします!

x(旧twitter) youtube
Categories
  • トップへ
  • ITパスポート (1)
  • programming (168)
    • CSSのアニメーション編 (26)
    • CSSのグリッドレイアウト編 (1)
    • CSSのセレクター編 (58)
    • CSSのフレックスボックス編 (1)
    • CSSのメディアクエリー編 (7)
    • CSSの基本編 (34)
    • HTMLのformタグ編 (1)
    • HTMLの基本編 (3)
    • JavaScriptの入門編 (30)
    • JavaScriptの基本編 (5)
    • Web制作をする環境を整えよう! (1)
  • Uncategorized (23)
  • VScode (1)
  • おすすめ商品! (1)
  • クラロワ (2)
  • マーケティング (17)
  • 大学生活 (7)
  • 心理学 (9)
  • 映画 (1)
  • 法学 (4)
  • 経済学 (4)
  • 読書 (7)
Pages
  • プライバシーポリシー
  • 免責事項
  • プロフィール
Archive
  • 2025年3月 (1)
  • 2025年1月 (9)
  • 2024年12月 (13)
  • 2024年11月 (5)
  • 2024年10月 (10)
  • 2024年9月 (15)
  • 2024年8月 (5)
  • 2024年7月 (6)
  • 2024年6月 (5)
  • 2024年5月 (10)
  • 2024年4月 (24)
  • 2024年3月 (11)
  • 2024年2月 (6)
  • 2024年1月 (10)
  • 2023年12月 (4)
  • 2023年11月 (3)
  • 2023年10月 (2)
  • 2023年9月 (3)
  • 2023年8月 (6)
  • 2023年7月 (3)
  • 2023年6月 (8)
  • 2023年5月 (2)
  • 2023年3月 (1)
  • 2023年2月 (1)
  • 2022年10月 (2)
  • 2022年9月 (2)
  • 2022年8月 (8)
  • 2022年7月 (2)
  • 2022年6月 (6)
  • 2022年5月 (9)
  • 2022年4月 (2)
  • 2022年2月 (4)
  • 2021年12月 (1)
  • 2021年11月 (4)
  • 2021年10月 (8)
  • 2021年9月 (14)
  • 2021年8月 (6)
  • 2021年6月 (1)
  • 2021年5月 (2)
  • 2021年4月 (1)
  • 2021年3月 (1)
  • 2021年2月 (2)
  • 2020年10月 (1)
  • 2020年7月 (1)
  • 2020年4月 (1)
  • 2020年1月 (1)
  • 2019年12月 (2)
© Copyright Syuta Chiba, 2019 All Rights Reserved.