обработчик событий и так видит переменную total ( getValue(trigger, total) ), как переменную родительской области видимости. addEventListener принимает первым (и единственным) аргументов объект события, который у тебя прописан, как total ( btn.addEventListener('click', (total) )
Дмитрий Беляев, у вас логика программиста, а есть ещё бизнес-логика.
Если технология популярна, то будет и большое комьюнити для быстрой поддержки. А время это деньги. Именно по этой причине популярен такой простой и такой ненавидимый "крутыми" программистами вордпресс
гугли Page Transitions. Это концепция загрузки контента без перезагрузки страницы. То, что показано по твоей ссылки это прелоадер к ней. Или используй библиотеку типа barba.js, как тебе уже написали. в react и vue, page transitions встроен по умолчанию