getElementsByClassName [i]返回undefinend

时间:2017-07-17 17:50:43

标签: javascript html undefined addeventlistener nodelist

我有一些“预览”类的元素。我想让其中一个可点击,所以首先我想通过

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

这确实返回了一个HTML集合,我可以看到所需元素的索引号是3。

现在我想为它分配一个事件监听器,但它返回“无法将'addEventListener'分配给未定义的”

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

1 个答案:

答案 0 :(得分:1)

如果只包含3preview个元素,那么此集合的最后一个索引为2而不是3NodeList集合为{ {1}}与任何其他0一样编入索引。

改变这个:

array

以下内容:

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

注意:

  • 请注意,我删除了包含回调函数的document.getElementsByClassName("preview")[2].addEventListener("click",someFunction) " ",并删除了两个括号,所以 附加事件监听器时,函数不会被调用。
  • 确保在页面完全加载后调用您的代码。