简体   繁体   中英

Javascript add item to current array

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 ?

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 = []; .

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");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM