温馨提示:本文翻译自stackoverflow.com,查看原文请点击:arrays - Javascript .map() is not a function
arrays javascript

arrays - Javascript .map()不是函数

发布于 2020-03-31 23:39:34

我在这里是新手(也是JavaScript的新手),所以请原谅我的基本问题。我有一个包含不同图像的HTML页面,这些图像都共享一个类。通过使用getElementsByClassName,我得到一个数组。我想通过使用.map()函数将事件侦听器添加到数组中的每个单元格。

这就是我所拥有的:

window.onload = function(){
var allImgs = document.getElementsByClassName("pft");

var newImgs = allImgs.map(
        function(arrayCell){
            return arrayCell.addEventListener("mouseover, functionName");
        }
    );
}; 

即使我将内部函数更改为不包含事件侦听器的内容,这也始终显示错误“ allImgs.map不是函数”。

我有此代码的另一个版本,我在其中循环浏览window.onload中的数组单元,并将事件侦听器以这种方式添加到它们中的每一个中,并且它可以正常工作。.map()函数为什么不起作用?它不能在window.onload中使用吗?

查看更多

提问者
JSn00b
被浏览
9
flawyte 2017-11-13 21:23

getElementsByClassName()返回,HTMLCollection而不是Array您必须先将其转换为JavaScript数组:

allImgs = Array.prototype.slice.call(allImgs);
// or
allImgs = [].slice.call(allImgs);
// or
allImgs = Array.from(allImgs);