Почему onclick не работает при первой загрузке сайта?
Потому что по нажатию F5 перезагружается только основная страница, а все вспомогательные файлы, включая файлы скриптов, загружаются из кэша. Поэтому закэшированные скрипты объявляют функции быстрее. И когда код страницы вешает обработчик onclick, то он видит функцию. Если же вы нажимаете Ctrl + F5, то код пытается повесить обработчик, но функция ещё не объявлена, и вместо функции по указанному имени вы получаете значение undefined.
Общий совет: Проверьте, что обработчик назначается тогда, когда в DOM уже есть данный элемент.