У меня есть объект с именем MYMODCLASS
, который содержит весь мой модуль functions
. Одна из этих функций addNumberValues(id, getId)
просматривает набор числовых входов, используя метод getElementsByName
, и добавляет значения, чтобы проверить, что значения меньше 100.
Когда я вызываю функцию, используя следующие обозначения:
window.onload = document.getElementsByName('grade').oninput = MYMODCLASS.addNumberValues('info', 'grade');
Функция запускается только один раз при загрузке документа, но не снова.
Когда я вызываю его как параметр для элемента ввода, он работает последовательно:
<input type="number" value=0 id="ind" name="grade" min="0" max="100" oninput="MYMODCLASS.addNumberValues('info', 'grade')" required>
<input type="number" value=0 id="nv" name="grade" min="0" max="100" oninput="MYMODCLASS.addNumberValues('info', 'grade')" required>
Проблема с последним вызовом заключается в том, что я должен повторить параметр oninput
30 раз. Поэтому я хочу использовать предыдущий вызов для функции `` addNumberValues.
MYMODCLASS.addNumberValues = function (id, getId) {
var element = document.getElementById(id);
var el = document.getElementsByName(getId);
var i = 0;
el.forEach((ite) => {
console.log(ite.value);
if (!isNaN(parseFloat(ite.value)) && isFinite(ite.value)) {
if (i === 0) {
i = parseFloat(ite.value);
} else {
i = parseFloat(i) + parseFloat(ite.value);
}
}
})
console.log(i);
if (i > 100 || i < 0) {
element.className = 'lbwarn';
element.innerText = i;
alert("Grade exceeds 100!")
} else {
element.className = 'lbinfo';
element.innerText = i;
}
};
Edit
Поэтому после прочтения комментариев я решил создать al oop, который устанавливает функция для каждого отдельного элемента по id. Но это все еще не работает.
window.onload = function() {
var numel = document.getElementsByName('grade');
numel.forEach((p) => {
console.log(p.id);
document.getElementById(p.id).oninput = MYMODCLASS.addNumberValues('info', 'grade');
})
}
Как я могу заставить вызов работать последовательно, используя мой последний метод?