Самые неочевидные решения ошибки Javascript is not a function
Статья посвящается тем, кто знает Javascript только очень поверхностно, как и я, и крайне редко его использует в повседневных делах :)
Битый час сегодня я не мог разобраться, ну какого черта скопированные примеры рабочих Javascript'ов с интернета у меня не работают, у разных вариантов однотипных скриптов, взятых с разных сайтов, после адаптации в мой скрипт постоянно вываливается одна и та же ошибка:
"blabla is not a function"
и все тут, хотя blabla очень даже function, инфа 100%, как говорится.
Когда уже не знал, что делать, стал сравнивать буквально символ в символ, все ли верно я переношу к себе с примеров, вроде бы все, ну, кроме названия функции - blabla, в примерах они все другие. Хм, думаю, ну смешно, конечно, причем тут может быть название функции, но ладно, давай сменим его на что-то другое, например, просто на bla, сменил и... заработало! Ошибки "is not a function" больше нет, все работает как надо.
Итак, неочевидные решения проблемы:
- В моем случае проблема была в том, что кроме Javascript-функции с именем blabla у меня в HTML-документе был <div>, у которого был селектор id с точно таким же именем blabla (то есть <div id="blabla">), и, как выяснилось дальнейшим гуглением, так делать нельзя, потому что в браузере создается глобальная переменная с именем каждого id, соответственно, функция с таким именем перестает быть функцией, о чем и сообщала ошибка "blabla is not a function";
- По той же причине, что и в предыдущем варианте, но чуть более очевидно - вероятно, в вашем Javascript-коде где-то есть объявление переменной с именем, совпадающим с названием проблемной функции.