getElementsByClassName[i] returns 未定义

getElementsByClassName[i] returns undefinend

我有一些元素与 class "preview"。我想让其中一个可以点击,所以首先我想通过

在 HTML 集合中找出它的索引号
console.log(document.getElementsByClassName("preview"));

这 return 一个 HTML 集合,我可以在其中看到所需元素的索引号是 3。

现在我想给它分配一个事件侦听器,但是它 returns "Cannot assign 'addEventListener' to undefined"

document.getElementsByClassName("preview")[3].addEventListener("click","someFunction()")

如果只有 3 个元素具有 class preview,则此集合的最后一个索引是 2 而不是 3,因为 NodeList 集合 0 像任何其他 array.

一样编入索引

改变这个:

document.getElementsByClassName("preview")[3].addEventListener("click","someFunction()")

以下内容:

document.getElementsByClassName("preview")[2].addEventListener("click",someFunction)

注:

  • 请注意,我删除了 " " 包装的回调函数 addEventListener,也去掉了两个括号,所以 附加事件侦听器时不会调用函数。
  • 确保在页面完全加载后调用您的代码。