Вы можете просто получить один элемент, подобный этому:
let n = 1;
document.querySelector(".BUBU-" + n); // This yields `<input class="BUBU-1">`.
Вы можете взять сумму их значений, сначала создав массив чисел, сопоставляя их с числовыми значениями их входов их селекторов, затем reduce
их на сумму:
const sum = Array.from({
length: 1000
}, (_, index) => Number(document.querySelector(".BUBU-" + (index + 1)).value))
.reduce((result, value) => result + value, 0);
console.log(sum);
Если вы хотите удалить пустые или нечисловые поля перед вычислением суммы, используйте .filter((value) => !isNaN(value))
перед строкой .reduce
; это фильтры NaN
значения .
Если вы хотите просто массив числовых значений, удалите шаг reduce
. Если вы хотите, чтобы значения представляли собой строки, а не числа, удалите вызов Number
. Если вам нужны только элементы, а не их значения, используйте просто document.querySelector(".BUBU-" + (index + 1))
.
Если все <input>
являются дочерними элементами родительского элемента , например, <div id="allInputs">
, их выбор и суммирование становится проще:
const sum = Array.from(document.querySelector("#allInputs input"), ({value}) => Number(value))
.reduce((result, value) => result + value, 0);
console.log(sum);
Если ваши <input>
должны содержать только цифры, рассмотрите возможность присвоения им атрибута type="number"
. Затем вы также можете использовать что-то вроде Array.from(document.querySelector("#allInputs input"), ({valueAsNumber: number}) => number)
и т. Д.
Увидев JSFiddle , убедитесь, что ваши селекторы верны. .BUBU-1
выбирает элементы с помощью class="BUBU-1"
, #BUBU-1
выбирает (первый) элемент с помощью id="BUBU-1"
.
Если вы хотите прослушать change
события, рассмотрите возможность использования делегирования событий:
В ванильном JavaScript:
document.body.addEventListener("change", function(e){
if(e.target.matches("input")){
// Calculate sum, etc.
}
});
В jQuery:
$("body").on("change", "input", function(e){
// Calculate sum, etc.
});
Поскольку ваш JSFiddle кажется более сложным, чем ваш вопрос, но вы только что спросили о суммировании полей ввода с именами классов общего шаблона, если у вас есть вопрос о более сложной проблеме , подумайте задаю новый вопрос.