let currentForm; // текущая форма const listenedForms = []; // список форм document.addEventListener('DOMContentLoaded', () => { // событие загрузки страницы setInterval(() => { // через 0,5с выполняется код const forms = document.querySelectorAll('form'); // все формы на странице forms.forEach(form => { // перебор форм if (listenedForms.indexOf(form) === -1) { // если такой формы нет в списке форм addFormListener(form); listenedForms.push(form); } }); }, 500); }); function addFormListener(form) { const allRadioButtons = form.querySelectorAll('input[type="radio"]'); // все радио кнопки в форме allRadioButtons.forEach(form => form.addEventListener('change', (e) => { // перебор кнопок calculate(e); // вызов функции })); } function calculate($event) { const form = $event.target.form; // форма currentForm = form; // текущая форма = переданой форме let result = Math.round((( (getGroupValue(1)/10) * getGroupValue(2)) + ( (getGroupValue(1)/10) * getGroupValue(4)) + ( (getGroupValue(5)/100) * getGroupValue(6)) + ( (getGroupValue(5)/100) * getGroupValue(7)) + getGroupValue(8)+ getGroupValue(9)+ getGroupValue(10) + getGroupValue(3))); // расчет результата console.log(result); // вывод результата в консоль const div = currentForm.querySelector('#result'); // блок #result в текущей форме $(currentForm).find('input.wicartoptional[name="group11"]').data('option-name',result).attr('data-option-name',result).trigger( "click" ); div.innerHTML = result; // запись результата в #result } function getGroupValue(groupNumber) { // функция нахождения значения выбранного радио в групе по groupNumber const group = getInputs(groupNumber); // получить список всех баттонов радио по номеру группы return getValueFromInputs(group); // функция получение значения выбранного радио баттона } function getInputs(groupNumber) { return currentForm.querySelectorAll(`input[name="group${groupNumber}"]`); // получить список всех баттонов радио по номеру группы } function getValueFromInputs(inputs) { // функция получение значения выбранного радио баттона let result; inputs.forEach(x => { // перебор всех батонов и нахождение выбранного if (x.checked) { // если он выбран result = parseInt(x.value); // записываем его значение } }); return result; }