js排他思想

348 阅读1分钟

记录导师讲到的一个思路-->排他思想

需求

在鼠标点击按钮时,该按钮颜色高亮,其他按钮为默认样式 image.png

方法1

炸弹法🤣

杀死兄弟,复活自己

原理:用一个炸弹,把自己&兄弟的样式全部干掉。而这个炸弹就是那个循环清除所有按钮样式 。随后自己使用复活甲,把自己复活就是单独给自己添加样式

(哎哟,本来想把那个代码改颜色突出一下的,可是我不会😅)

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>Document</title>
</head>

<body>
  <button>按钮1</button>
  <button>按钮2</button>
  <button>按钮3</button>
  <button>按钮4</button>
  <button>按钮5</button>
  <script>
    // 1-获取元素
    let btnList = document.querySelectorAll('button')
    // 2-循环注册事件
    for (let i = 0; i < btnList.length; i++) {
      btnList[i].onclick = function () {
        //2.1在点击时,清除所有按钮样式
>         for (let j = 0; j < btnList.length; j++) {
>           btnList[j].style.backgroundColor = ''
>         }
        //2.2再给自己添加样式
        btnList[i].style.backgroundColor = 'orange'
      }
    }
  </script>
</body>

</html>

方法2

狙击法

原理:把样式放在类名里,谁需要就给谁添加。 用document.querySelector()精确的找到携带类名的元素, 再使用classList.remove()干掉类名。 最后给自己classList.add()添加类名。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>Document</title>
  <style>
>     .orange {
>       background-color: orange;
>     }
  </style>
</head>

<body>
  <button class="orange">按钮1</button>
  <button>按钮2</button>
  <button>按钮3</button>
  <button>按钮4</button>
  <button>按钮5</button>
</body>
<script>
  // 1-获取元素
  let btnList = document.querySelectorAll('button')
  // 2-循环注册事件
  for (let i = 0; i < btnList.length; i++) {
    btnList[i].onclick = function () {
      // 2-1 利用查询选择器(配合交集选择器精准选择)携带样式的元素
      //      给他取消样式(移除类名)
>       document.querySelector('button.orange').classList.remove('orange')
      // 2-2 再给自己添加类名
      this.classList.add('orange')
    }
  }
</script>

</html>

总结

用在tab栏