Javascript 为什么会出现这个错误?addEventListener不是一个函数

Javascript 为什么会出现这个错误?addEventListener不是一个函数,javascript,Javascript,为什么下面的代码不起作用? 控制台打印是我为确保正确访问元素所做的测试。当我执行addEventListener的类型时,它返回函数。但是,当我尝试实际添加一个事件时,它返回错误:“uncaughttypeerror:thumbnails[key].addEventListener不是一个函数”,我不知道为什么。 有人能帮忙吗 var thumbnails = document.getElementsByClassName("small"); var previewImage = documen

为什么下面的代码不起作用? 控制台打印是我为确保正确访问元素所做的测试。当我执行addEventListener的
类型时,它返回函数。但是,当我尝试实际添加一个事件时,它返回错误:“uncaughttypeerror:thumbnails[key].addEventListener不是一个函数”,我不知道为什么。
有人能帮忙吗

var thumbnails = document.getElementsByClassName("small");
var previewImage = document.getElementById("large");
var caption = document.getElementById("captionText");

for(var key in thumbnails) {
    console.log(key + " -> " + thumbnails[key].src);
    console.log(typeof thumbnails[key].addEventListener);
    thumbnails[key].addEventListener("click", function(){
        previewImage.src = thumbnails[key].src;
        caption.innerHTML = thumbnails[key].alt;
    });
}

当我输入addEventListener时,它会为每个键返回函数
?什么类型的对象是
thumbnails
?如果您在控制台上记录thumbnails[key],您可能会在
thumbnails
上获取一个无关的属性。如果它是一个数组,则对它执行常规的
for(var i=0;
类型循环,而不是在
中使用
for…。它是一个对象,请添加一个
hasOwnProperty
检查。@JaromandaX我忘了包括创建缩略图的行。我从
getEmentsByClassName()获得它
所以它是一个节点列表对象。我对
缩略图[key]
进行了
hasOwnProperty检查,如@torazaburo和@miguelatada建议的,结果返回false