боле менее пристойный js пишется так
const servPrice = {
lin: 0,
clean: 0,
};
/**
* @param {HTMLInputElement[]} elements
* @param {HTMLInputElement} valueElement
* @param {{lin: number; clean: number}} servPrice
* @param {'lin'|'clean'} propName
* @param {Function} done
*/
function act(elements, valueElement, servPrice, propName, done) {
if (elements.length === 0) {
return;
}
elements.forEach((element) => {
element.addEventListener('change', () => {
switch (element.value) {
case 'Yes':
servPrice[propName] = parseInt(valueElement.getAttribute("data-price"), 10);
break;
case 'No':
servPrice[propName] = 0;
break;
default:
}
done();
});
});
}
act(
[...document.querySelectorAll('input[name="Linen_Service"]')],
document.querySelector('input[name="linen_price"]'),
servPrice,
'lin',
renewDatas,
);
act(
[...document.querySelectorAll('input[name="Cleaning_Service"]')],
document.querySelector('input[name="cleaning_price"]'),
servPrice,
'clean',
renewDatas,
);
только конечно дать функции act более понятное название и описать что делает в комменте
Плюс передачу более трех параметров в функцию лучше делать с помощью объекта и использовать деструктуризацию.