addEventListener包含多个元素

MO3*_*ari 2 html javascript addeventlistener

我开始使用.我有两个按钮,并且想要在单击这些按钮时更改backgroundColor.但我的代码不起作用.这是我的代码:

document.getElementsByTagName("button").addEventListener("click", function(){
    func(this)
});

function func(element){
    element.style.backgroundColor="gray";
}
Run Code Online (Sandbox Code Playgroud)
<div id="area">
    <button type="button" class="btn" id="btn1">Play With Me!</button>
    <button type="button" class="btn" id="btn2">Play With Me!</button>
</div>
Run Code Online (Sandbox Code Playgroud)

是否有任何方式addEventListener可以使用多个元素?

Ada*_*ady 8

最好的方法是在代码中尽可能少地使用事件监听器.因此,不是将事件侦听器附加到每个按钮,而是可以将1个单个事件侦听器附加到areadiv,并根据event.target属性进行适当的更改.

运行以下工作代码段:

document.getElementById('area').addEventListener('click', function(event) {
  func(event.target);
});

function func(element) {
  element.style.backgroundColor = "blue";
}
Run Code Online (Sandbox Code Playgroud)
<div id="area">
  <button type="button" class="btn" id="btn1">Play With Me!</button>
  <button type="button" class="btn" id="btn2">Play With Me!</button>
</div>
Run Code Online (Sandbox Code Playgroud)


Nen*_*car 6

你可以这样或者DEMO

 var button = document.getElementsByTagName("button");
 for (var i = 0; i < button.length; i++) {
   button[i].addEventListener("click", function() {
     this.style.backgroundColor = "gray";
   });
 }
Run Code Online (Sandbox Code Playgroud)
<div id="area">
  <button type="button" class="btn" id="btn1">Play With Me!</button>
  <button type="button" class="btn" id="btn2">Play With Me!</button>
</div>
Run Code Online (Sandbox Code Playgroud)