Javascript getElementByClassName不是';行不通
我有一个问题,为什么我不想工作累了一段时间。我刚开始学习js。非常感谢你的帮助Javascript getElementByClassName不是';行不通,javascript,getelementsbyclassname,Javascript,Getelementsbyclassname,我有一个问题,为什么我不想工作累了一段时间。我刚开始学习js。非常感谢你的帮助 var test=document.getElementsByClassName(“test”); test.onclick=函数(){ 警报(“测试”); }; 我不是javascript开发人员,但我认为应该是 var test = document.getElementsByClassName("test")[0]; test.onclick = function (){ alert("test")
var test=document.getElementsByClassName(“test”);
test.onclick=函数(){
警报(“测试”);
};
我不是javascript开发人员,但我认为应该是
var test = document.getElementsByClassName("test")[0];
test.onclick = function (){
alert("test");
};
asdocument.getElementsByCassName
返回一个列表
document.getElementsByClassName("test");
返回一个数组。
您必须循环该数组,并将onclick应用于每个元素。您需要将eventlistener添加到每个元素。因此,您需要遍历元素,因为
document.getElementsByClassName()
返回一个元素数组。您可以这样做:
函数触发器(){
警报(“测试”);
}
var test=document.getElementsByClassName(“test”);
对于(变量i=0,j=test.length;i
如前面的答案所述,方法
document.getElementsByClassName
返回一个节点列表对象,该对象是具有数字索引(0,1…)的类似数组的对象,您可以使用for.对其进行循环。。在
循环或Array.prototype.forEach.call方法中,可以将事件侦听器附加到每个节点
var tests = document.getElementsByClassName("test");
var node;
for (node in tests) {
node.addEventListener("click", function(e){
// do something
});
}
或以以下方式:
var tests = document.getElementsByClassName("test");
Array.prototype.forEach.call(tests, function(node){
node.addEventListener("click", function(e){
// do something
});
});
要点是你必须向每个元素添加事件监听器。可能的重复我看不到你的jQuery脚本插入到任何地方,还有script.js
文件中的内容?@ZombieChowder示例中的代码是香草javascript,jQuery不是必需的。@JohnC-huh是的,我猜它正好从我身边经过。它返回一个类似于live的数组,而不是数组:)好的,对不起,但至少你可以循环使用它:)在大多数浏览器中,它实际上返回一个类似于HTMLCollection对象的NodeList对象。@asmmahmud不,它没有。“new”.querySelector*
方法返回s@Andreas根据W3School,它返回一个NodeList对象。但是,根据>Mozilla开发者网络,它返回一个HTMlCollection。哪一个是正确的?