我的网页中的"addbutton"类中有几个按钮,我希望每当单击其中任何一个按钮时都会弹出警报。你会怎么做?以下是我已经尝试过的一些JS代码(没有成功(:
addbuttons = document.getElementsByClassName("addbutton")
addbuttons.onclick {
for (var i=0; i<addbuttons.length; i++) {
alert("hi")
}
document.getElementsByClassName("addbutton").onclick = function() {
alert("hi")}
还有我的HTML:
<input type="checkbox">
<p>Breakfast:</p>
<button class="addbutton">+</button>
<div></div>
<br>
<input type="checkbox">
<p>Mid-Morning:</p>
<button class="addbutton">+</button>
<div></div>
<br>
document.getElementsByClassName("addbutton")
返回一个数组(准确地说是HTMLCollection
(。此外,您需要将onclick设置为函数,不能使用语法.onclick { }
。
要为每个按钮设置一个监听器,您需要使用一个类似于的for循环
for(let i = 0; i < addbuttons.length; i++){
addbuttons[i].onclick = function(){
alert('Works!')
}
}
或者如果您正在使用ES6
for(let addButton of addbuttons){
addButton.onclick = function(){
alert('Works!')
}
}
可能是相关链接,
https://www.w3schools.com/js/js_loop_for.asp
https://www.w3schools.com/jsref/event_onclick.asp
让我们定义您的事件:
function myEvent() {
alert("hi");
}
现在,让我们按类名获取元素,循环它们,并为它们添加一个事件侦听器:
for (let btn of document.getElementsByClassName("addbutton")) btn.addEventListener("click", myEvent);
您的错误是,您假设getElementsByClassName
返回的元素集有一个onclick
,但集合内的元素只有onclick
。