我正在尝试将项添加到当前数组。
var arrayValues = new Array();
arrayValues.push("Value 1");
arrayValues.push("Value 2");
arrayValues = document.getElementsByTagName('a');
arrayValues.push("Value 3");
通过这种方式我得到一个错误,并且我得到超值集合后获得超值集合时我得到错误,我尝试添加一个新项目它抛出错误:对象不支持此属性或方法,这是推送方法。
分配超链接集合后,数组发生了什么?如何添加新项目?
答案 0 :(得分:14)
您的意思是arrayValues.push(document.getElementsByTagName('a'));
吗?
否则,您将分配NodeList
返回的getElementsByTagName()
,它会覆盖您刚刚将值推入的数组。
旁注:这里没有理由使用new Array()
。只需写下var arrayValues = [];
。
答案 1 :(得分:2)
如果要将所有<a>
元素推送到数组,则必须先将NodeList转换为数组。大多数人使用Array.prototype.slice.call(nodelist)
。
如果您有阵列,则可以将array.push
与function.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");