LoginSignup
0
0

More than 3 years have passed since last update.

JSで特定の要素だけを選択した状態にする

Last updated at Posted at 2021-03-29

やりたいこと

こんな感じで要素をクリックしたときにクリックした要素のみ選択された状態にしたい。
recommended-books-5-3.gif

実装方針

  • clickイベント発火時にクラスを付与
  • 付与したクラスに対してcssをあてる
  • クリックされていない要素からクラスを外すことで1つだけにクラスが付与されている状態にする

実装結果

  resultItem.addEventListener('click', (e) => {
          const selectedItems = document.getElementsByClassName('selected')
          if (selectedItems) { //初回は選択状態の要素がないので条件分岐しないとエラーが発生しそう
            Array.prototype.slice.call(selectedItems).forEach(item => {
              item.removeAttribute('class') //一度クラスが付与されたdiv要素を全て外し1つだけ選択されている状態にする
            })
          }
          resultItem.setAttribute('class', 'selected') //選択状態にする
        })
      })
    })

まず最初にgetElementsByClassNameでselectedクラスが付与された要素をまとめて取得。
次に取得した要素に対してremoveAttributeを実行する。getElementsByClassNameではHTMLCollectiomが返されるので
forEachを使うためにはArray.prototype.slice.callを用いて一度Array型に変換する必要がある。

ループ処理の中でクラスを除外することで、既に選択された要素からクラスを外し、非選択状態にする。
最後に選択した要素にクラスを付与することで選択された状態にする。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0