▲TOPへ戻る

要素をクリックしたらクラスを付与し、その前にクリックして与えた別の要素のクラスを取る方法

addremovetoggleでクラスを付与したり、除いたりするのは簡単にできますが、 リストのように複数ある中で、一つをクリックしたら、クラスが付与され、ほかのリストをクリックしたら、先ほどのクラスを除き、新しくクラスを付与するというのはよくわからなかったので、いろいろ調べてやってみました。

HTML
 <div class="header">
    <ul>
        <li>リスト1</li>
        <li>リスト2</li>
        <li>リスト3</li>
        <li>リスト4</li>
        <li>リスト5</li>
    </ul>
  </div> 

CSS
  .header{
    height: 70px;
    background: rgb(3, 3, 77);
    margin-bottom: 150px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .header ul{
      display: flex;
      justify-content: space-around;
      margin: 10px 5px;
      height: 40px;
      width: 100%;
  }
  .header ul li{
      display: inline-block;
      background: rgb(3, 3, 77);
      padding: 0 5px;
      color: white;
      line-height: 40px;
      border-radius: 5px;
  }
  .header ul li.active{              /*クラス"active"を与えた時、背景色が変わる*/
      background: rgb(160, 160, 226);
  }

javascriptの6~9行目で、最初にすべての<li>からクラスを取り除くよう設定します。これにより、その前にクリックして付与したクラスを取り除き、クリックしたリストにクラスが付与されます。

javascript
  <script>    
    document.addEventListener('DOMContentLoaded', function() {
        const elements = document.querySelectorAll("li");
        const elementlength = elements.length;
        for (let i = 0; 1 < elementlength; i++ ){
            elements[i].addEventListener("click", function(){
            elements.forEach(function(element) {
            element.classList.remove("active") 
            });
            elements[i].classList.add("active")
            });
        };
    });
  </script>

完成

  • リスト1
  • リスト2
  • リスト3
  • リスト4
  • リスト5

profile

パソコン好きなガオ

コロナ禍によるステイホームを機にプログラミングを学ぶ。パソコンに関してはプロではないが、ちょっと詳しい程度。

パソコン

javascript

カメラ

ブログ