Вам нужно слушать событие
DOMContentLoaded и только тогда выполнять код.
На jsfiddle.com это делается автоматически для вас. Нажмите на иконку настроек в блоке javascript и там увидите
Load Type = onLoad
. Если поменяете на
No wrap - in <head>
(как у вас на локалке), то и там работать не будет. А если поставите
No wrap - in <body>
, то снова будет работать.
Дело в том, что на момент выполнения скрипта этих кнопок ещё нет в DOM и обработчики событий просто не на что вешать. Нет обработчиков - нет и смены класса.