Javascript 将项目添加到当前数组

发布于 2024-10-21 07:17:14 字数 347 浏览 4 评论 0原文

我正在尝试将一个项目添加到当前数组中。

var arrayValues = new Array();
arrayValues.push("Value 1");
arrayValues.push("Value 2");
arrayValues = document.getElementsByTagName('a');
arrayValues.push("Value 3");

通过这种方式,我得到一个错误,并且我没有得到值 1 和值 2,在获取超链接集合后,当我尝试添加新项目时,它会抛出错误:对象不支持此属性或方法,这是推送方法。

分配超链接集合后,数组会发生什么情况?我如何向其中添加新项目?

I am trying to add an item to a current array.

var arrayValues = new Array();
arrayValues.push("Value 1");
arrayValues.push("Value 2");
arrayValues = document.getElementsByTagName('a');
arrayValues.push("Value 3");

By doing this way I get a error, and I dont get value 1 and value 2, after getting the hyperlink collection when I try to add a new item it throws Error: Object doesn't support this property or method which is the push method.

What is happening to the array after the collection of hyperlinks is assigned ? How can I add a new item to it ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千里故人稀 2024-10-28 07:17:14

您的意思是 arrayValues.push(document.getElementsByTagName('a')); 吗?

否则,您将分配由 getElementsByTagName() 返回的 NodeList,这会覆盖您刚刚将值推入的数组。

旁注:这里没有理由使用 new Array() 。只需编写var arrayValues = [];

Did you mean arrayValues.push(document.getElementsByTagName('a'));?

Otherwise, you're assigning the NodeList returned by getElementsByTagName(), which overwrites the array you had just pushed values into.

Side note: there's no reason to use new Array() here. Just write var arrayValues = [];.

一梦浮鱼 2024-10-28 07:17:14

如果要将所有 元素推送到数组中,则必须先将 NodeList 转换为数组。大多数人使用Array.prototype.slice.call(nodelist)。

拥有数组后,您可以将 array.pushfunction.apply 将它们推送到一次调用中。

结果代码如下所示:

var arrayValues = [];
arrayValues.push("Value 1");
arrayValues.push("Value 2");
arrayValues.push.apply(arrayValues, Array.prototype.slice.call(document.getElementsByTagName('a')));
arrayValues.push("Value 3");

If you want to push all <a> elements to the array, you have to convert the NodeList to an array first. Most people use Array.prototype.slice.call(nodelist).

Once you have an array, you can then use array.push in conjunction with function.apply to push them in one call.

The resulting code looks like:

var arrayValues = [];
arrayValues.push("Value 1");
arrayValues.push("Value 2");
arrayValues.push.apply(arrayValues, Array.prototype.slice.call(document.getElementsByTagName('a')));
arrayValues.push("Value 3");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文