javascript - 显示多组按钮中的当前按钮

标签 javascript php

我有一组按钮,其中 js 代码选择当前按钮以不同方式显示它。

我想做的是有两组按钮,我可以独立地与不同组中的按钮进行交互。

就像在第一组上选择按钮“1”,在第二组上选择“2”按钮。在完美的世界中,我希望在 js 中只有一个函数来为不同的集合执行此操作。我不知道该怎么做。

我的一组按钮是这样的:

// Add active class to the current button (highlight it)
var header = document.getElementById("myDIV");
var btns = header.getElementsByClassName("btn");
for (var i = 0; i < btns.length; i++) {
  btns[i].addEventListener("click", function() {
  var current = document.getElementsByClassName("active");
  current[0].className = current[0].className.replace(" active", "");
  this.className += " active";
  });
}
.btn {
  border: none;
  outline: none;
  padding: 10px 16px;
  background-color: #f1f1f1;
  cursor: pointer;
  font-size: 18px;
}

/* Style the active class, and buttons on mouse-over */
.active, .btn:hover {
  background-color: #666;
  color: white;
}
<div id="myDIV">
  <button class="btn">1</button>
  <button class="btn active">2</button>
  <button class="btn">3</button>
  <button class="btn">4</button>
  <button class="btn">5</button>
</div>

最佳答案

您的问题不清楚,这个答案好吗?

这是关于 JS 事件委托(delegate)的,
您还应该使用classList.toggle(),它允许直接包含测试

const DivAllButtons = document.getElementById('All-buttons')

DivAllButtons.onclick = ({target : clicked_Element }) =>
  {
  if (!clicked_Element.matches('button.btn')) return

  clicked_Element.parentNode
  .querySelectorAll('button.btn')
  .forEach( bt =>
    {
    bt.classList.toggle( 'active', bt===clicked_Element ) 
    }); 
  }
#All-buttons > div { 
  margin: 1em; 
  }
.btn {
  border           : none;
  outline          : none;
  padding          : 10px 16px;
  background-color : #f1f1f1;
  cursor           : pointer;
  font-size        : 18px;
  }
.active, 
.btn:hover {
  background-color : #666;
  color            : white;
  }
<div id="All-buttons">
  <div>
    <button class="btn">1</button> <button class="btn active">2</button>
    <button class="btn">3</button> <button class="btn">4</button> <button class="btn">5</button>
  </div>

  <div>
    <button class="btn">1</button> <button class="btn active">2</button>
    <button class="btn">3</button> <button class="btn">4</button> <button class="btn">5</button>
  </div>

  <div>
    <button class="btn">1</button> <button class="btn active">2</button>
    <button class="btn">3</button> <button class="btn">4</button> <button class="btn">5</button>
  </div>

  <div>
    <button class="btn">1</button> <button class="btn active">2</button>
    <button class="btn">3</button> <button class="btn">4</button> <button class="btn">5</button>
  </div>

  <div>
    <button class="btn">1</button> <button class="btn active">2</button>
    <button class="btn">3</button> <button class="btn">4</button> <button class="btn">5</button>
  </div>

</div>

关于javascript - 显示多组按钮中的当前按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60365272/

相关文章:

javascript - WPML 在 javascript 中本地化

php - SQL:如何根据标志在所有区域下方显示事件(在没有多对多连接的情况下)

javascript - 按键事件在 ionic 框架中不起作用

javascript - jQuery 的字符串简单数学运算

带有 Zend_Test_PHPUnit_DatabaseTestCase 和数据库适配器问题的 PHPUnit 测试数据库

php - 搜索用户,先回友(Order)

php - 如何在无限循环中每 4 分钟回显一次

javascript - 导入语句是否替换了 javascript 中的脚本标签?

javascript - 使用 Javascript 播放和暂停图像

javascript - Socket.io Nodejs CoffeeScript在socket.on中同时获取套接字和当前继承的类变量