Javascript добавляет элемент в текущий массив

Я пытаюсь добавить элемент в текущий массив.

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

Таким образом, я получаю сообщение об ошибке, и я не получаю значение 1 и значение 2 после получения коллекции гиперссылок при попытке добавить новый элемент, который он выдает. Ошибка: объект не поддерживает это свойство или метод, который метод push.

Что происходит с массивом после назначения набора гиперссылок? Как я могу добавить к нему новый элемент?

Ответ 1

Вы имели в виду arrayValues.push(document.getElementsByTagName('a'));?

В противном случае вы назначаете NodeList, возвращаемый getElementsByTagName(), который перезаписывает массив, в который вы только что ввели значения.

Боковое примечание: нет причин использовать new Array() здесь. Просто напишите var arrayValues = [];.

Ответ 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");