Javascript 将事件连接到某个标记或某个类的所有html元素

Javascript 将事件连接到某个标记或某个类的所有html元素,javascript,Javascript,(使用纯javascript)如何将事件连接到某个标记或某个类的所有元素? 使用“querySelector”,他们只选择一项(第一项),而使用“getElementByTagName”或“getElementByClassName”则不选择任何项(我在控制台中显示错误) 非常感谢 //byCssSelector-CLASS document.querySelector(“.myClass”).addEventListener(“单击”,函数(){alert(“ok”);}); //byCss

(使用纯javascript)如何将事件连接到某个标记或某个类的所有元素? 使用“querySelector”,他们只选择一项(第一项),而使用“getElementByTagName”或“getElementByClassName”则不选择任何项(我在控制台中显示错误)

非常感谢

//byCssSelector-CLASS
document.querySelector(“.myClass”).addEventListener(“单击”,函数(){alert(“ok”);});
//byCssSelector-标记
document.querySelector(“section”).addEventListener(“单击”,函数(){alert(“ok”);});
//分班
document.getElementByClassName(“myClass2”).addEventListener(“单击”,函数(){alert(“ok”);});
//副标签
document.getElementByTagName(“div”).addEventListener(“单击”,函数(){alert(“ok”);})

查询选择器:

1)查询选择器(“类”)

2) 查询选择器(“[标记]”)
标记/类名:
3) getElementByTagName
4) getElementByClassName
querySelector
只返回它找到的第一个元素。您应该使用用户
querySelectorAll
,它返回与标记匹配的元素列表。然后,您可以使用用户
forEach
,在元素之间循环,并为每个元素附加一个侦听器

document.querySelectorAll('.myClass').forEach(function (el) {
  el.addEventListener('click', function() {
    alert('ok');
  });
});
NodeList.forEach是一项新功能,并非所有浏览器都支持该功能。您可以检查兼容性。如果希望支持它们,则必须使用
for
循环或将
节点列表
转换为
数组


您可以使用
[].slice.call
。如果您使用的是
ES6/ES2015
,您甚至可以查看
数组。根据

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

var divs=document.querySelector('.content');
console.log(divs)
1
2.
3.
4
当使用“getElementByTagName”或“getElementByClassName”时,不是I 选择无(我在控制台中显示错误)

有两个错误

  • 它应该是getElementsByTagName,而不是getElementByTagName
  • getElementsByTagName返回节点的实时集合,而不是单个元素
成功

var x = Array.prototype.slice.call(document.getElementByClassName("myClass2"));
x.forEach( function(el){
  el.addEventListener("click", function() { alert("ok"); });
});

你试过运行它吗?@Rajesh是的。为什么?NodeList没有
.forEach
功能它实际上有-它最近添加的功能。我的错。这应该是一个评论。那么,他的问题的答案应该是一个评论?仅仅因为他的问题真的很容易解决,并不需要发表评论。首先,这是一个明显的重复,我将把它标记为一个。您目前没有足够的代表,但如果有,请将问题标记为重复问题,而不是回答问题。第二,这不是答案。答案解释了什么是错误的,或者可以通过代码示例和可能的参考链接改进什么。基本上,如果一年后有人读到这个答案,他/她应该从中学习一些东西。我理解你的意思,并且部分同意(关于重复部分),但我指出他的错误是什么,以及如何改进,不是吗?我已经更新了你的答案。请检查它是否传达了相同的信息。如果没有,请回复。谢谢,我没有注意到