javascript - 具有相似 id 模式的按钮的单个 onclick 函数 - JavaScript

标签 javascript onclick addeventlistener

我想减少代码。

function one() {
 console.log("hai");
}

document.getElementById('dealsButton_1').onclick = one;
document.getElementById('dealsButton_2').onclick = one;
//I  want the above 2 lines of code reduced to one.

单击“dealsButton_*”图案化 id 元素的单个函数。我怎样才能做到这一点。 元素是动态加载的

最佳答案

您可以使用 querySelectorAll选择器 [id^=dealsButton_] 在一行中添加事件监听器 - 请参见下面的演示:

function one() {
 console.log("hai");
}

Array.prototype.forEach.call(
  document.querySelectorAll('[id^=dealsButton_]'), function(e) {
  e.addEventListener('click', one);
});
<div id="dealsButton_1">one</div>
<div id="dealsButton_2">two</div>

如果标记是动态加载,您可以基于它在静态元素上,如下所示:

function one() {
  console.log("hai");
}

document.addEventListener('click', function(e) {
  if (e.target && /^dealsButton_/.test(e.target.id))
    one();
})

// dynamically add
document.body.innerHTML = `<div id="dealsButton_1">one</div>
<div id="dealsButton_2">two</div>`;

关于javascript - 具有相似 id 模式的按钮的单个 onclick 函数 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45753375/

相关文章:

javascript - 如何在数组中使用 jQuery 绑定(bind)或 addEventListener?

javascript - 如果 div innerText 改变触发 JavaScript 事件

javascript - 仅替换 json mongo 中的年份 isoDate

javascript - ChangeDetectionStrategy.OnPush 什么时候实际运行变更检测?

javascript - 在 .click(function () {? 中使用 $.ajax

javascript - ReactJS onClick 获取 DIV ID

asp.net - 在 asp.net Onclick 字符串中转义双引号

javascript - ajax 调用后 Google 图表不绘制

javascript - 移动网站 : -webkit-overflow-scrolling: touch conflicts with position:fixed

JavaScript 播放音频一个又一个 HTML5