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

未捕获的类型错误:document.getElementsByClassName(…).addEventListener不是函数

  •  0
  • pigfox  · 技术社区  · 2 年前

    我需要收听点击 <input/> 元素。 这是我的代码

    <script>
        document.getElementsByClassName("form-control").addEventListener("click", function(e){
          alert("Listener added");
        });
    </script>    
    

    但我得到了这个错误:

    Uncaught TypeError: document.getElementsByClassName(...).addEventListener is not a function
    

    有什么想法吗?

    1 回复  |  直到 2 年前
        1
  •  0
  •   eelpcik    2 年前

    出现此错误的原因是,getElementsByClassName返回一个元素数组,但您需要有一个元素才能添加事件侦听器。如果您想将事件侦听器添加到所有元素,您可以简单地循环遍历数组,如下所示。

    document.getElementsByClassName("form-control").forEach(element => {
      element.onclick = event => {
        alert("Listener added");
      }
    }); 
    

    如果要将事件侦听器添加到特定元素,只需通过索引数组即可访问它。

    document.getElementsByClassName("form-control")[0].addEventListener("click", function(e){
      alert("Listener added");
    }); 
    

    您还可以使用特定元素的id,以便更容易地访问它们。