Где элементы находятся, что за элементы, как просуммировать, что сделать с суммой:
const container = document;
const selector = 'input[type="checkbox"]';
const sumElements = elements =>
Array.prototype.reduce.call(elements, (acc, n) => acc + +n.value, 0);
const onSumChange = sum => console.log(sum);
Полный пересчёт суммы при любых изменениях + делегирование:
container.addEventListener('change', function({ target: t }) {
if (t.matches(selector)) {
onSumChange(sumElements(this.querySelectorAll(`${selector}:checked`)));
}
});
container.querySelector(selector).dispatchEvent(new Event('change', { bubbles: true }));
Или, исправление суммы с учётом конкретного чекбокса, изменившего своё состояние + обработчик события цепляется к каждому чекбоксу индивидуально:
const cb = container.querySelectorAll(selector);
let sum = sumElements(Array.prototype.filter.call(cb, n => n.checked));
const onChange = e => onSumChange(sum += e.target.value * [ -1, 1 ][+e.target.checked]);
cb.forEach(n => n.addEventListener('change', onChange));
onSumChange(sum);