您需要注意“.addEventListener 不是函数”错误的另一件重要事情是该错误可能是由于为其分配了错误的对象而导致的,例如考虑
let myImages = ['images/pic1.jpg','images/pic2.jpg','images/pic3.jpg','images/pic4.jpg','images/pic5.jpg'];
let i = 0;
while(i < myImages.length){
const newImage = document.createElement('img');
newImage.setAttribute('src',myImages[i]);
thumbBar.appendChild(newImage);
//Code just below will bring the said error
myImages[i].addEventListener('click',fullImage);
//Code just below execute properly
newImage.addEventListener('click',fullImage);
i++;
}
在上面的代码中,我基本上是使用 javascript 动态地将图像分配给我的 html 中的 div 元素。我通过将图像写入数组并通过 while 循环循环它们并将它们全部添加到 div 元素来完成此操作。
然后我为所有图像添加了一个点击事件侦听器。
代码“myImages[i].addEventListener('click',fullImage);” 会给你一个“addEventListener 不是函数”的错误,因为我将一个 addEventListener 链接到一个没有 addEventListener() 函数的数组对象。
但是对于代码“newImage.addEventListener('click',fullImage);” 它正确执行,因为 newImage 对象可以访问函数 addEventListener() 而数组对象没有。
如需更多说明,请点击链接:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Not_a_function