нужно было написать понятно
catalog[i].removeEventListener('click', listener, false);
catalog[i].addEventListener('click', listener, false);
я неадекватное невменько которое потеряло связь с реальностью, которому надо удалять обработчик события и задавать его заново само не знаю зачем
Full-stack - Это когда программист, умеет frontend, backend, seo, disign, qa, т.е. это специалист, который умеет все (не чуть-чуть, а именно разбирается как следует)
А до full-stack уровня, нужно отпахать как папа Карло лет 7-10
UPD:
Будете смеяться - только на 4 год в этой профессии я понял, что мне не хватает подобных фундаментальных знаний, посему и начал изучать алгоритмы и паттерны. Но судя по тому, что я понял ваше объяснение, надеюсь не все еще потеряно...