Метод document.getElementsByClassName()
возвращает и HTMLCollection , который является массивоподобным объектом (но не является массивом ), поэтому вы не можете использовать forEach()
на нем, чтобы перебрать его элементы.Вместо этого вы можете использовать цикл for:
let h = document.getElementsByClassName("buttons");
for (let i = 0; i < h.length; i++)
{
h[i].addEventListener("click", function()
{
alert(this.id);
});
}
<button id="id1" class="buttons">BUTTON 1</button>
<button id="id2" class="buttons">BUTTON 2</button>
Кроме того, вы можете spread
его элемент в массиве, а затем использовать forEach()
для него:
let h = document.getElementsByClassName("buttons");
[...h].forEach(function(btn)
{
btn.addEventListener("click", function()
{
alert(this.id);
});
});
<button id="id1" class="buttons">BUTTON 1</button>
<button id="id2" class="buttons">BUTTON 2</button>