Javascript burgerLines.map不是一个函数

Javascript burgerLines.map不是一个函数,javascript,Javascript,对于以下代码,我得到了此错误: burgerLines.map不是一个函数 HTML <div class="burgerIcon"> <div class="burgerLine"></div> <div class="burgerLine"></div> <div class="burgerLine"></div> </div> 我的代码怎么了?querySelectorAll方法返

对于以下代码,我得到了此错误:

burgerLines.map不是一个函数

HTML

<div class="burgerIcon">
  <div class="burgerLine"></div>
  <div class="burgerLine"></div>
  <div class="burgerLine"></div>
</div>

我的代码怎么了?

querySelectorAll方法返回一个类似数组的对象,称为节点列表

这些数据结构称为“类似数组”,因为它们显示为数组,但不能与
map
等数组方法一起使用

您可以使用
数组将其转换为数组。应用

const burgerLines=document.queryselectoral('.burgerLine');
常量burgerLinesArray=Array.apply(null,burgerLines);
burgerLinesArray.map((burgerLine)=>{
burgerLine.addEventListener('mouseover',(e)=>{
log('汉堡悬停')
})
})

-
-
-

querySelectorAll
返回节点列表,而不是数组,因此它没有
.map
方法。无论如何,您都在尝试在此处使用
.map()
进行迭代。我建议您使用
.forEach()
,因为您没有使用
.map()
将提供给您的结果。
.forEach()
方法是节点列表原型的一部分。刚刚看到你的留言。是的,forEach正在工作。:-)谢谢这当然可以解决它。我在阅读答案后发现的另一个解决方案是使用forEach而不是map。是的,地图是用来操纵你没有做的元素。在本例中,Foreach是一个更好的选项,我还更新了答案。但是节点列表可以与forEach()方法一起使用。在您的示例中,我们不需要将burgerLine转换为数组,仍然可以将其与forEach()一起使用。或者,如果我们转换它,那么我们可以将它与map()方法一起使用。
const burgerLines = document.querySelectorAll('.burgerLine')

burgerLines.map((burgerLine) => {
  burgerLine.addEventListener('mouseover', (e) => {
    console.log('The burger is hovered')
  })
})