多div多按钮改变颜色

问题描述 投票:0回答:1

当我按下 div 1 中的按钮时,我得到了带有 multid div 和按钮的 html,其中只有按钮,而更改类名处于活动状态或将其删除 1button 处于活动状态

javascript button
1个回答
0
投票

您可以使用 JavaScript 实现此功能,方法是使用事件侦听器来切换相应容器内按钮上的

active
类。当您单击一个
div
中的按钮时,它将将该按钮设置为活动状态,并从同一
active
中的其他按钮中删除
div
类。

HTML:

您有两个

div
容器(
.buttons
.buttons2
),每个容器包含多个按钮。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="buttons">
      <button class="test active">test1</button>
      <button class="test">test2</button>
      <button class="test">test3</button>
    </div>

    <div class="buttons2">
      <button class="test active">test1</button>
      <button class="test">test2</button>
      <button class="test">test3</button>
    </div>
    <script src="script.js"></script>
  </body>
</html>

CSS:

button {
  padding: 10px;
  margin: 5px;
  background-color: lightgray;
}

button.active {
  background-color: blue;
  color: white;
}

JS 逻辑:

handleButtonClick
函数查找与单击的按钮相同的容器 (
div
) 内的所有按钮。 它从该容器内的所有按钮中删除
active
类。 然后,它将
active
类添加到单击的按钮。

事件监听器:

JavaScript 将

click
事件侦听器附加到
.buttons
.buttons2
容器内的每个按钮。

// Function to handle button click event
function handleButtonClick(event) {
  const buttonGroup = event.target.parentElement; // Get the parent div of the button
  const buttons = buttonGroup.querySelectorAll('.test'); // Get all buttons in the div

  // Remove 'active' class from all buttons
  buttons.forEach(button => button.classList.remove('active'));

  // Add 'active' class to the clicked button
  event.target.classList.add('active');
}

// Attach event listener to each button
document.querySelectorAll('.buttons .test, .buttons2 .test').forEach(button => {
  button.addEventListener('click', handleButtonClick);
});
© www.soinside.com 2019 - 2024. All rights reserved.