Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 想加上;addEventListener";关于具有相同类的多个元素_Javascript_Html_Addeventlistener_Dom Events_Event Listener - Fatal编程技术网

Javascript 想加上;addEventListener";关于具有相同类的多个元素

Javascript 想加上;addEventListener";关于具有相同类的多个元素,javascript,html,addeventlistener,dom-events,event-listener,Javascript,Html,Addeventlistener,Dom Events,Event Listener,我想通过jS中的事件监听器执行“onClick”中的逻辑,但它似乎只运行一次?我四门课都有,但我不明白为什么这门课似乎只适用于第一门课 HTML: 查看是否有查询选择器: querySelector()返回文档中与指定选择器或选择器组匹配的第一个元素 如果要匹配多个元素,则需要使用querySelectorAll和,因为在结果上循环 或者,您可以使用。您需要使用querySelectorAll,它将返回一个集合。现在使用spread操作符(三个点)将其转换为数组,并使用forEach。在forE

我想通过jS中的事件监听器执行“onClick”中的逻辑,但它似乎只运行一次?我四门课都有,但我不明白为什么这门课似乎只适用于第一门课

HTML:

查看是否有
查询选择器

querySelector()返回文档中与指定选择器或选择器组匹配的第一个元素

如果要匹配多个元素,则需要使用
querySelectorAll
和,因为在结果上循环


或者,您可以使用。

您需要使用
querySelectorAll
,它将返回一个集合。现在使用
spread操作符
(三个点)将其转换为数组,并使用
forEach
。在
forEach
回调中添加事件侦听器

[…document.querySelectorAll('.breakdown')].forEach(函数(项){
item.addEventListener('单击',函数()){
log(item.innerHTML);
});
});
故障开始
修理开始
修复端

分解结束
需要使用
查询选择器all
而不是
查询选择器
。然后像这样迭代列表

const breakdownButton = document.querySelectorAll('.breakdown');

// It add event listeners for the first button element. 
// you can use forloop or using map function to iterate for the list elements and here i used breakdownButton[0] as an example.

breakdownButton[0].addEventListener('click', function() {
  console.log(this.innerHTML);
});
使用迭代函数,如forEach或map。我用forEach

const breakdownButton = document.querySelectorAll('.breakdown');
breakdownButton.forEach(function(btn) {
  btn.addEventListener('click', function() {
    console.log();
  });
});

[0]
不会在列表上迭代。它只接受其中的第一个元素。不,像这样,我们需要为我给出的示例中的按钮元素添加事件侦听器。其他按钮被禁用。除了第一个按钮,它们的事件监听器不会被触发。我如何动态禁用和重新启用按钮?谢谢!在某些情况下,一个比另一个更有价值吗?@NakulMalhotra-活动委派的好处在我所联系的问题上得到了详细解释。将其分散到一个数组中真的有必要吗
forEach
可以在Chrome控制台中的
querySelectorAll
结果上调用。但不幸的是,它不能直接在
getElementsByClassName
的结果上调用。。。
const breakdownButton = document.querySelectorAll('.breakdown');

// It add event listeners for the first button element. 
// you can use forloop or using map function to iterate for the list elements and here i used breakdownButton[0] as an example.

breakdownButton[0].addEventListener('click', function() {
  console.log(this.innerHTML);
});
const breakdownButton = document.querySelectorAll('.breakdown');
breakdownButton.forEach(function(btn) {
  btn.addEventListener('click', function() {
    console.log();
  });
});