Javascript 将项目添加到当前数组
我正在尝试将一个项目添加到当前数组中。
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的意思是
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 bygetElementsByTagName()
, which overwrites the array you had just pushed values into.Side note: there's no reason to use
new Array()
here. Just writevar arrayValues = [];
.如果要将所有
元素推送到数组中,则必须先将 NodeList 转换为数组。大多数人使用Array.prototype.slice.call(nodelist)。
拥有数组后,您可以将
array.push
与function.apply
将它们推送到一次调用中。结果代码如下所示:
If you want to push all
<a>
elements to the array, you have to convert the NodeList to an array first. Most people useArray.prototype.slice.call(nodelist)
.Once you have an array, you can then use
array.push
in conjunction withfunction.apply
to push them in one call.The resulting code looks like: