Javascript “如何修复”;未捕获类型错误:无法读取属性';编号';“未定义”的定义;?

Javascript “如何修复”;未捕获类型错误:无法读取属性';编号';“未定义”的定义;?,javascript,html,arrays,Javascript,Html,Arrays,这个月我刚刚学习了JavaScript,我正在尝试理解forEach方法以及数据集打印控制台上数组中每个项目的自定义数据集(数据编号)。因此,当我单击按钮时,它会在控制台上显示每个数组项(div元素)的数据编号 它不断返回错误 “UncaughtTypeError:无法读取未定义的属性'number'”,即使我已为number赋值 我注意到,当我只使用一个div元素并从中删除“数组时,它会在控制台上打印该元素的数据编号,没有错误 可能是语法问题,还是我遗漏了什么 myDiv=Array.fro

这个月我刚刚学习了JavaScript,我正在尝试理解
forEach
方法以及
数据集
打印控制台上数组中每个项目的自定义
数据集
数据编号
)。因此,当我单击按钮时,它会在控制台上显示每个数组项(div元素)的
数据编号

它不断返回错误

“UncaughtTypeError:无法读取未定义的属性'number'”,即使我已为number赋值

我注意到,当我只使用一个div元素并从
中删除“
数组时,它会在控制台上打印该元素的
数据编号
,没有错误

可能是语法问题,还是我遗漏了什么

myDiv=Array.from(document.getElementsByClassName('myDiv'));
函数myFunction(){
常量编号=myDiv.dataset[“编号”];
控制台日志(编号);
}

数据集集合
这是一篇课文
另一个文本。
另一个文本。
另一个文本。

按钮
为什么不这样做:

var myFancyButton=document.querySelector('.myFancyButton');//通过querySelector(“className”)获取按钮
myFancyButton.addEventListener('click',function(){//向按钮添加一个click事件监听器
var myDivs=document.querySelectorAll('.myDiv');//查询类名为“myDiv”的所有元素
forEach(函数(myDiv){//现在在所有这些div上使用forEach
常量编号=myDiv.dataset[“编号”];
控制台日志(编号);
});
});

这是一篇课文
另一个文本。
另一个文本。
另一个文本。


按钮
两件事-不要使用
forEach()
,在
myFunction
中使用
map()


myDiv=Array.from(document.getElementsByClassName('myDiv');
函数myFunction(){
const number=myDiv.map(d=>d.dataset[“number”]);
控制台日志(编号);
}

这是一篇课文
另一个文本。
另一个文本。
另一个文本。


按钮
首先-要执行的array.forEach()函数需要一个元素来处理。在您的例子中,这些是单独的DIV元素。因此,您需要一个参数来“链接”到特定元素。 可以这样做:

function myFunction(element);
您要查询的属性名为数据编号,因此我建议使用它。如果想要获取DOM元素的特定属性,可以使用
element.getAttribute(attribute)
下面是一个完整的示例:

myDiv=Array.from(document.getElementsByClassName('myDiv'));
函数myFunction(元素){
var theNumber=element.getAttribute(“数据编号”);
console.log(编号);
}
myDiv.forEach(myFunction)

这是一篇课文
另一个文本。
另一个文本。
另一个文本。

是的,但OP显然是个初学者,因此可能需要解释一下。@FedericoklezCulloca谢谢,在code中添加了一些注释可能重复的