Кого складываем:
const elements = document.querySelectorAll('[name^=AR_AMOUNT]');
Нормальный способ - перебираем коллекцию элементов (цикл в явном виде или с помощью методов массива), достаём значения, складываем:
const sum = Array.prototype.reduce.call(
elements,
(acc, n) => acc + +n.value,
0
);
// или
let sum = 0;
for (const { value } of elements) {
sum += Number(value);
}
// или
let sum = 0;
for (let i = 0; i < elements.length; i++) {
sum = sum - -elements.item(i).value;
}
Ненормальный способ - рекурсия. Функция получает индекс, если элемент с таким индексом существует, возвращаем его значение плюс результат рекурсивного вызова с индексом, увеличенным на единицу; если элемента нет - возвращаем
0
:
const sum = (function sum(i, n = elements[i]) {
return n ? parseFloat(n.value) + sum(i + 1) : 0;
})(0);
Дикий способ - сами ничего считать не будем. Выдёргиваем из коллекции элементов значения; склеиваем их, используя в качестве разделителя символ
+
, в строку; строку отдаём в
eval
; всё, сумма получена (ну, почти, если исходная коллекция элементов была пуста, то строка тоже будет пустой, так что надо не забыть подставить
0
вместо возможного
undefined
, который является результатом выполнения пустой строки):
const sum = eval(Array.from(elements, n => n.value).join('+')) ?? 0;