Как правильно обновить общую сумму?
Вот вариант решения. На проблемную строку указал Дмитрий Беляев.
Помимо сомнительного решения хранить данные в DOM так же дополню:
1) Используйте const по умолчанию, let только если будете менять значение переменной. При этом, если в переменной объект или массив, а Вы меняете свойство объекта или элементы массива, то это тоже const.
2) Не надо обращаться в DOM при вызове функции, чтобы найти там какой-то элемент. Элемент никуда не девается в Вашем случае. Соответственно, элемент лучше найти один раз вне функции, а внутри функции только обращаться к переменной, которая хранит этот элемент. Поиск в DOM одна из самых медленных операций.
3) Не используйте innerHTML без реальной необходимости. textContent в Вашем случае лучше подходит. Так быстрее и безопаснее.
snippet
Дело в этой строке:total.innerHTML = Number(item.textContent) + Number(item.textContent);в total по сути выводится последний элемент умноженный на 2.

Ну и хранить данные в DOM, и каждый раз парсить из текста числа - так себе идея.
Хранити данные в переменных и в виде чисел, а DOM используйте только для отрисовки.