javascript - 缩短具有不同 id 的重复动作
问题描述
我正在尝试编写一个脚本,该脚本在按下多个 id 的按钮时执行相同的操作。有没有办法以任何方式缩短它?
function start(){
var b1,b2,b3,b4 = true;
document.getElementById('btn1').onclick=btn1;
document.getElementById('btn2').onclick=btn2;
document.getElementById('btn3').onclick=btn3;
document.getElementById('btn4').onclick=btn4;
}
function btn1(b1) {
if(b1){
document.getElementById('btn1').style.opacity=".25";
b1=false;
}
}
function btn2(b2) {
if(b2){
document.getElementById('btn2').style.opacity=".25";
b2=false;
}
}
function btn3(b3) {
if(b3){
document.getElementById('btn3').style.opacity=".25";
b3=false;
}
}
function btn4(b4) {
if(b4){
document.getElementById('btn4').style.opacity=".25";
b4=false;
}
}
解决方案
为所有按钮创建一个函数并使用循环添加它们。你可以用一个类来定位它们。片段如下:
function start(){
const buttons = document.querySelectorAll('.button');
for (i = 0; i < buttons.length; i++) {
buttons[i].onclick = buttonFunction;
}
}
start();
function buttonFunction(e) {
e.currentTarget.style.opacity=".25";
}
<button class="button" id="btn1">1</button>
<button class="button" id="btn2">2</button>
<button class="button" id="btn3">3</button>
<button class="button" id="btn4">4</button>
推荐阅读
- android - android 是否加密通过 HttpConnection Post 或 Retrofit 等库发送的 https 标头?
- javascript - C3JS 条形图,带有颜色的特定顺序
- angular - Angular 7 EventSource 无限期地获取流
- jquery - XNAT JSON 获取项目 ID 列表以填充下拉列表以供选择
- python - 是否可以创建数组数组的 numpy.memmap?
- haskell - 似乎不能在实例声明中使用带有类型变量的类型表达式和需要显式类型的函数
- python - Django表单中两个日期字段之间的区别
- javascript - 如何使用 Jest 测试此功能?
- rpa - rpa 是用哪种语言和哪种框架开发的?
- angular5 - 如何将浏览器 url 的工具提示更改为自定义消息