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