如何使用 Javascript 将 HTML 属性添加到数组
How do I add HTML attributes to an array using Javascript
我正在尝试将三个 HTML 元素的属性添加到一个数组中。
这是一些示例 HTML:
<p x="30">Paragraph 1</p>
<p x="50">Paragraph 2</p>
<p x="100">Paragraph 3</p>
这是让我最接近我正在寻找的结果的 Javascript:
const paragraphs = document.querySelectorAll(`p`);
let i;
for (i = 0; i < paragraphs.length; i++) {
let dataSetOne = paragraphs[i].getAttribute('x');
let dataSetOneArray = Array.from(dataSetOne);
}
当我console.log(dataSetOne)时,我得到“30”“50”“100”,这正是我所希望的。
当我尝试使用 Array.from(dataSetOne) 将这些属性添加到一个数组时,我最终得到三个如下所示的数组:Array(1) [ "3", "0" ];数组(2) [ "5", "0" ] 数组(3) [ "1", "0", "0" ].
我要找的数组是这样的:Array ["30", "50", "100"]
我尝试了一些其他功能,但是 none 这些功能让我更接近我正在寻找的结果。
这不是针对特定项目的。我正在努力提高我对数组和面向对象编程的理解。
在此先感谢您的帮助。
The Array.from()
method creates a new, shallow-copied Array instance from an array-like or iterable object.
由于您在每次迭代中的 for 循环内使用 Array.from()
,因此正在创建新数组。您可以简单地在循环外声明数组 (dataSetOneArray) 并直接推送属性值。
const paragraphs = document.querySelectorAll(`p`);
let dataSetOneArray = [];
let i;
for (i = 0; i < paragraphs.length; i++) {
let dataSetOne = paragraphs[i].getAttribute('x');
dataSetOneArray.push(dataSetOne);
}
不过,您可以使用 Array.prototype.map():
以更简单的方式实现这一点
The map()
method creates a new array populated with the results of calling a provided function on every element in the calling array.
var elList = Array.from(document.querySelectorAll('p'));
var res = elList.map(el => el.getAttribute('x'));
console.log(res);
<p x="30">Paragraph 1</p>
<p x="50">Paragraph 2</p>
<p x="100">Paragraph 3</p>
怎么样
let dataSetOneArray = [];
for (i = 0; i < paragraphs.length; i++) {
let dataSetOne = paragraphs[i].getAttribute('x');
dataSetOneArray.push(dataSetOne);
}
我正在尝试将三个 HTML 元素的属性添加到一个数组中。
这是一些示例 HTML:
<p x="30">Paragraph 1</p>
<p x="50">Paragraph 2</p>
<p x="100">Paragraph 3</p>
这是让我最接近我正在寻找的结果的 Javascript:
const paragraphs = document.querySelectorAll(`p`);
let i;
for (i = 0; i < paragraphs.length; i++) {
let dataSetOne = paragraphs[i].getAttribute('x');
let dataSetOneArray = Array.from(dataSetOne);
}
当我console.log(dataSetOne)时,我得到“30”“50”“100”,这正是我所希望的。
当我尝试使用 Array.from(dataSetOne) 将这些属性添加到一个数组时,我最终得到三个如下所示的数组:Array(1) [ "3", "0" ];数组(2) [ "5", "0" ] 数组(3) [ "1", "0", "0" ].
我要找的数组是这样的:Array ["30", "50", "100"]
我尝试了一些其他功能,但是 none 这些功能让我更接近我正在寻找的结果。
这不是针对特定项目的。我正在努力提高我对数组和面向对象编程的理解。
在此先感谢您的帮助。
The
Array.from()
method creates a new, shallow-copied Array instance from an array-like or iterable object.
由于您在每次迭代中的 for 循环内使用 Array.from()
,因此正在创建新数组。您可以简单地在循环外声明数组 (dataSetOneArray) 并直接推送属性值。
const paragraphs = document.querySelectorAll(`p`);
let dataSetOneArray = [];
let i;
for (i = 0; i < paragraphs.length; i++) {
let dataSetOne = paragraphs[i].getAttribute('x');
dataSetOneArray.push(dataSetOne);
}
不过,您可以使用 Array.prototype.map():
以更简单的方式实现这一点The
map()
method creates a new array populated with the results of calling a provided function on every element in the calling array.
var elList = Array.from(document.querySelectorAll('p'));
var res = elList.map(el => el.getAttribute('x'));
console.log(res);
<p x="30">Paragraph 1</p>
<p x="50">Paragraph 2</p>
<p x="100">Paragraph 3</p>
怎么样
let dataSetOneArray = [];
for (i = 0; i < paragraphs.length; i++) {
let dataSetOne = paragraphs[i].getAttribute('x');
dataSetOneArray.push(dataSetOne);
}