代码之家  ›  专栏  ›  技术社区  ›  MountainConqueror

为什么document.getelementsbyclassname在我的情况下不起作用[重复]

  •  -1
  • MountainConqueror  · 技术社区  · 8 年前

    为什么我的小提琴没有按预期工作?

    <button class="example"> Expirience </button>
    
    
    
    var x = document.getElementsByClassName("example");
    
    x.onClick = function() {
      console.log('Hello')
    }
    

    https://jsfiddle.net/xrkjvt57/18/

    5 回复  |  直到 8 年前
        1
  •  3
  •   Emeeus    8 年前

    var x = document.getElementsByClassName("example");
    console.log(x)
    
    x[0].addEventListener("click", function(){
    console.log('Hello')
    });
    <button class="example"> Expirience </button>
        2
  •  2
  •   user10025500user10025500    8 年前

    getelementsbyclassname返回数组。

    var x = document.getElementsByClassName("example")[0];
    
        3
  •  0
  •   Adam H    8 年前

    您的代码有几个问题,下面是一个工作示例,其中有关于错误的注释。

    var x = document.getElementsByClassName("example");
    
    // x is an array, you need to loop over the elements in the array
    for(var i =0; i < x.length; i++)
      // onClick is not how you add a click handler, use addEventListener and 'click'
      x[i].addEventListener("click", function() {
        console.log('Hello')
      });
    .example {
      color: red;
    }
    <button class="example"> Expirience </button>
        4
  •  0
  •   Aankhen Jon    8 年前

    x 是一个 NodeList 元素的,所以必须循环它们并分别处理每个元素。此外,事件处理程序都是小写的( onclick )中。你想要:

    var buttons = document.getElementsByClassName("example");
    
    Array.prototype.forEach.call(buttons, function (button) {
    	button.onclick = function() {
      	    console.log('Hello');
    	}
    })
    <button class="example"> Expirience </button>
        5
  •  0
  •   zanmato    8 年前

        var x = document.querySelector(".example");
    
        x.addEventListener('click', function() {
          console.log('Hello')
        });
    <button class="example"> Expirience </button>