こんにちは、さち です。
先日、ウェブサイトの編集をしていたのですが、JavaScript を使って要素の「クラス」を追加・削除したいことがありました。
よく使う方法なのに、すぐに記述や使い方を忘れてしまいます……。
そこで今回は、ピュア(Vanilla) JavaScript でクラスを操作する方法について、まとめていきます。備忘録です。
サンプルコード
例として、こんな感じの HTML を用意しました。要素 <div>
は target
という「id」と、one
two
three
という3つの「クラス」を持っています。
<div id="target" class="one two three"></div>
クラスを操作する前準備として、JavaScript を使って、この要素を div
という変数として取得しておきます。
let div = document.querySelector('#target');
クラスを操作する方法
追加する
要素に「クラス」を追加します。
// four というクラスを追加 div.classList.add('four'); // 複数のクラス(four, five, six)をまとめて追加 div.classList.add('four', 'five', 'six'); // 配列を使ってクラス(four, five, six)をまとめて追加 let classes = ['four', 'five', 'six']; div.classList.add(...classes);
削除する
要素が持っている「クラス」を削除します。
// one というクラスを削除 div.classList.remove('one'); // 複数のクラス(one, two, three)をまとめて削除 div.classList.remove('one', 'two', 'three'); // 配列を使ってクラス(one, two, three)をまとめて削除 let classes = ['one', 'two', 'three']; div.classList.remove(...classes);
クラスを持っているか調べる
要素が指定した名前の「クラス」を持っているかどうか調べます。持っていれば true
、持っていなければ false
が返ってきます。
// seven というクラスを持っているか調べる let bool = div.classList.contains('seven'); // クラスを持っていれば true、持っていなければ false になる console.log(bool);
トグルする(削除/追加の切り替え)
要素が、指定した名前の「クラス」を持っていれば削除、持っていなければ追加します。スイッチのオン/オフや、要素の表示/非表示をしたいときに使うと便利なメソッドです。
// number というクラスを削除/追加する div.classList.toggle('number'); // 戻り値を受け取る場合 let bool = div.classList.toggle('number'); // クラスを追加したときは true、削除したときは false になる console.log(bool);
クラスを追加したときは true
、削除したときは false
が返ってきますが、トグルするだけなら無視してOKです。
クラスを置き換える
要素が指定した名前の「クラス」を持っている場合、別の名前のものに置き換えます。
// two というクラスを double に置き換える div.classList.replace('two', 'double');
置き換えに成功したときは true
、失敗したときは false
が返ってきますが、置き換えたいだけなら無視してOKです。
その他
classList
は、「 」という配列に似たオブジェクトです。length
プロパティや forEach()
メソッドを使用できます。
// 持っているクラスの数 div.classList.length; // 取得したクラス名を順番にすべて取り出す div.classList.forEach( classname => { console.log(classname); });
「クラス」がなければ length
の値は 0
になるので、「クラス」を1つ以上持っているかどうかの判別としても使えます。
コメント