HTMLCollection — это объект, ведущий себя подобно массиву. Например, чтобы получить один элемент коллекции, можно обратиться как к элементу массива по индексу:
<a href="link1">Link 1</a> <a href="link2">Link 2</a>
var links = document.getElementsByTagName('a'); //HTMLCollection alert(links[0]);
Но перебрать коллекцию как массив уже не получится:
links.forEach(function(link, i, links) { alert(link); });
Чтобы получилось, нужно получить массив из HTMLCollection перед проходом:
var links_as_arr = Array.from(links); links_as_arr.forEach(function(link, i, links_as_arr) { alert(link); });
Или использовать один из следующих вариантов.
Подлиннее:
Array.prototype.forEach.call(links, function(link) { alert(link); });
Покороче:
[].forEach.call(links, function(link) { alert(link); });