подскажите как правильно работать 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 шт):
Смотрите какой тип данных возвращает метод. 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, если вы их где-то раньше не задали этой кнопке.