Почему когда я вешаю событие клика на кнопку, то при загрузке она сразу срабатывает?
Потому что кто-то не понимает разницы между собственно функцией и результатом её вызова. Вот же позорище.

Оборачивайте вызов функции в другую функцию. Или bind используйте. Или разберитесь, что принимают обработчики событий в качестве параметра, и перепишите функцию так, чтобы не надо было ей передавать элементы btnNextLevel.
Как тогда передать параметр?
Сделать обёртку, которая примет аргумент и вернёт обработчик клика