javascript - 显示多组按钮的当前按钮
问题描述
我有一组按钮,其中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>
解决方案
你的问题不清楚你想要什么,但我想这就是你想要的,我在下面的代码片段中添加了另一个按钮,我改变了一些东西:
- 删除基于 ID 的选择器,并将其替换为类名的选择
document.querySelectorAll(".button-set")
器querySelectorAll()
- 遍历按钮集(我的代码片段中的 2 个元素),并将
active
类按钮的选择器更改为当前 divid
,因为它是唯一的,并且允许我们定位特定的集。 - 为 div 组或集合添加唯一
ID
值。
var sets = document.querySelectorAll(".button-set");
sets.forEach((el, i) => {
btns = el.getElementsByClassName("btn");
for (var i = 0; i < btns.length; i++) {
btns[i].addEventListener("click", function() {
var button = document.querySelector(`#${el.id} .active`);
button.className = button.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" class="button-set">
<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>
<br />
<div id="myDIV2" class="button-set">
<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>
推荐阅读
- r - 无法在 R 中读取 .xlsx 文件
- laravel - laravel - 使用自定义值进行验证
- javascript - 自定义 JavaScript 模式窗口未按预期显示
- php - Google 课堂创建主题返回 403 身份验证错误
- azure - Asp.net Core 3.1 Serilog 不适用于 Azure Webapp
- c++ - 为什么这个 std::launder 示例未定义行为?
- for-loop - Pinecript:如何获得长度在 1 和 i 之间的所有 sma 的最大值?
- angular - Angular 9 中的 Paypal Connect 按钮
- node.js - 如何在猫鼬中获取全部文件?
- apache-kafka - 未创建 Kafka 主题 (ZooKeeperClientTimeoutException)