подскажите как правильно работать forEach JS?

    btnPlus = document.getElementsByTagName('button'),
        incomePlus = btnPlus[0],
        expensesPlus = btnPlus[1];
     btnPlus.forEach(function (item) {
                item.expensesItems.setAttribute('disabled', 'disabled');
                item.expensesPlus.setAttribute('disabled', 'true');
            });

правильно ли пищу код?


Ответы (1 шт):

Автор решения: Pavel Grishaev

Смотрите какой тип данных возвращает метод. getElementsByTagName возвращает экземпляр типа HTMLCollection. У экземпляров данного типа нет метода forEach.

Чтобы использовать данный метод, нужно HTMLCollection сначала преобразовать в массив. Другими словами в экземпляр типа Array, у которого данный метод имеется. Например так:

let array = Array.from(btnPlus);
array.forEach(.......

Другие методы возвращают другие типы, например метод document.querySelectorAll возвращает экземпляр типа NodeList, у которого есть метод forEach.

В вашем примере

btnPlus.forEach(function (item) {
    item.expensesItems.setAttribute('disabled', 'disabled');
    item.expensesPlus.setAttribute('disabled', 'true');
});

если бы он был рабочим, в аргументе item был бы элемент кнопки, у которого нет свойств expensesItems и expensesPlus, если вы их где-то раньше не задали этой кнопке.

→ Ссылка