Written by Kasumi

【JavaScript】selectボックスで選択したoptionによってクラスを追加・削除する方法

JavaScriptを使いselectボックスで選択したoptionによって、クラスを追加・削除したい。

本記事ではこのような悩みを解決。

実装例を元に解説します。

実装例

See the Pen
JavaScriptを使い、selectボックスで選択したoptionによってクラスを追加・削除する方法
by Kohei (@kouk05)
on CodePen.0

実装例です。

selectボックスで選択したoptionによって、テキストの内容が変更されてます。

テキストは予め一つの要素として複数用意、CSSで非表示にしてます。

選択したoptionのvalue値とクラス名が一緒の要素はクラスを追加。

それ以外はクラスを削除。

クラスが追加された要素はCSSで表示する処理をしてます。

実装方法は以下の通りです。

HTMLでselectタグを用意

<select name="item">
  <option value="">選択してください</option>
  <option value="item01">リンゴ</option>
  <option value="item02">ブドウ</option>
  <option value="item03">パイナップル</option>
</select>
<div class="item item01">リンゴが選択されました</div>
<div class="item item02">ブドウが選択されました</div>
<div class="item item03">パイナップルが選択されました</div>

まずはHTMLでselectタグを用意します。

name属性に任意の値を設定します。

クラスを追加・削除したい要素を用意します。

CSSで装飾

.item {
  display: none;
}
.item.selected {
  display: block;
}

クラスが追加・削除された時のCSSを追加します。

本記事ではselectedクラスが付与されたらdisplay: block;で要素を表示するようにします。

JavaScript

var item = document.querySelectorAll(".item");
var select = document.querySelector('[name="item"]');

// selectボックスを選択したら
select.addEventListener("change", function () {
  // selectedクラスを削除
  item.forEach(function (element) {
    element.classList.remove("selected");
  });
  // 選択したselectボックスのvalue値と同じクラス名の要素にselectedクラスを付与
  var selected = select.value;
  document.querySelector("." + selected).classList.add("selected");
});

最後にJavaScriptで動的処理を実行します。

selectボックスを選択したらという処理をaddEventListener(引数にchangeを指定)で行い、関数を定義します。

上記関数内でclassList.removeを行い、追加予定のクラスを削除・リセットします。

選択したoptionのvalue値を以下で取得します。

selectボックス要素.value

上記選択した要素にclassList.addでクラスを追加すれば完成です。

まとめ

JavaScriptを使いselectボックスで選択したoptionによって、クラスを追加・削除する方法について紹介しました。

以上で解説を終わります。

目次

関連記事

JavaScript

JavaScriptを使いselectタグでページ内リンクを実装する方法

2022.10.22
2116
JavaScript

JavaScriptを使い、デバイス幅によって条件分岐する方法【jQuery不要】

2022.10.20
3597
JavaScript

【Webpack-Dev-Server】HTMLファイルを保存してもブラウザが自動リロードされない原因・対処方法

2023.01.14
1566
JavaScript

【JavaScript初心者向け】配列要素を追加・上書き・削除する方法

2022.08.22
3921