Программирование сайтов
20 Авг в 09:26

Как перебрать HTMLCollection с помощью forEach?

HTMLCollection – это объект, ведущий себя подобно массиву. Например, чтобы получить один элемент коллекции, можно обратиться как к элементу массива по индексу:

[html]
<a href="link1">Link 1</a>
<a href="link2">Link 2</a>
[/html]

[code lang=”js”]
var links = document.getElementsByTagName(‘a’); //HTMLCollection
alert(links[0]);
[/code]

Но перебрать коллекцию как массив уже не получится:

[code lang=”js”]
links.forEach(function(link, i, links) {
alert(link);
});
[/code]

Чтобы получилось, нужно получить массив из HTMLCollection перед проходом:

[code lang=”js”]
var links_as_arr = Array.from(links);
links_as_arr.forEach(function(link, i, links_as_arr) {
alert(link);
});
[/code]

Или использовать один из следующих вариантов.

Подлиннее:

[code lang=”js”]
Array.prototype.forEach.call(links, function(link) {
alert(link);
});
[/code]

Покороче:

[code lang=”js”]
[].forEach.call(links, function(link) {
alert(link);
});
[/code]