【发布时间】:2017-12-08 02:05:18
【问题描述】:
我正在尝试使用 for 循环将侦听器添加到多个按钮。每个按钮的相应侦听器由按钮的 ID 属性指示。按钮 ID 遵循“button-[listenerName]”的形式。我使用querySelectorAll() 获取所有按钮元素的列表,然后遍历该列表,从每个按钮元素的名称中切出每个侦听器的名称。然后,我将侦听器的名称与addEventListener() 一起使用,以尝试将该按钮与其侦听器相关联。
<!DOCTYPE html>
<html>
<body>
<button id="button-listener1">Try 1</button>
<button id="button-listener2">Try 2</button>
<button id="button-listener3">Try 3</button>
<button id="button-listener4">Try 4</button>
<p id="demo"></p>
<script>
var selector = "[id^=button]";
var allButtons = document.querySelectorAll(selector);
for (var button of allButtons) {
var listenerName = button.id.slice(button.id.lastIndexOf("-")+1);
button.addEventListener("click", listenerName);
}
var listener1 = function() {
document.getElementById('demo').innerHtml = "1";
}
var listener2 = function() {
document.getElementById('demo').innerHtml = "2";
}
var listener3 = function() {
document.getElementById('demo').innerHtml = "3";
}
var listener4 = function() {
document.getElementById('demo').innerHtml = "4";
}
</script>
</body>
</html>
不幸的是,它不起作用。那是怎么回事?谢谢。
【问题讨论】:
-
您的控制台显示什么错误?
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。
-
您需要通过添加无效内容的详细信息来完成您的问题。
-
好吧..你不是在添加一个监听函数,而是一个字符串..这是怎么回事
-
为什么不将它们附加到同一个事件监听器。当一个按钮被点击时,你可以使用
this.id来知道哪个按钮被点击了。
标签: javascript for-loop addeventlistener