Function is not defined javascript

I’m trying to create a Javascript chat, with Python on the backend. This is the code I’m using .

When I load the page in Firefox , I get:

However, the function init_chat is clearly defined. What am I doing wrong? I created a jsFiddle for the page.

1 Answer 1

This happens when you define the functions in the head part and call them, when the document is not yet initialized. Move the script part, where the initialization happens and try it out.

Since you are using jQuery, it would also be better, if you can initialize the variables and enclose the whole script under a function and call the function inside document ‘s ready state, it would probably work.

Я понимаю немного из-за этого сообщения: JQuery, setTimeout не работает, почему он не работает, но все это сохраняет, что это правильный способ вызова _finalvalidate() внутри моего div?

Способ jQuery сделать это будет примерно таким:

Если вы действительно хотите использовать стиль функции javascript, вам нужно будет поместить функцию вне функции document.ready() , а затем вы сможете вызвать ее с помощью атрибута onclick :

В этом случае у вас больше нет jQuery.

Вы должны связывать события с событиями jQuery, если вы используете jQuery. Но насколько он не работает, вот некоторая информация о правилах определения JS.

Любая функция, которую вы объявляете позже, НЕ должна быть в обратном вызове документа jquery. Вы не можете получить его, потому что он скрыт внутри функции, которая предоставляет ему собственную личную область, из которой вы не можете добраться извне.

Вы можете экспортировать его в глобальный объект, делая его доступным везде.

Читайте также:  Как делают диагностику ноутбука

но лучший способ — просто объявить его в глобальной области в первую очередь.

Ваша функция не существует в области окна, где вы пытаетесь ее вызвать. Я бы поменял ваш код на:

И тогда ваш JavaScript будет выглядеть следующим образом:

Если вы хотите, чтобы ваш метод вызывался из атрибута div onclick, вам необходимо сделать его доступным в глобальной области. Ниже приведены некоторые варианты. Тем не менее, я должен указать, что Вариант 1, как правило, не одобряется в эти дни, а Вариант 2 — просто глупо. Рекомендуемый подход к подобным вещам — ненавязчиво подключить обработчики событий, как в ответе Кори.

Вариант 1

Вариант 2

Чтобы сохранить его в jQuery, я бы дал вашему div тег id и вызвал его с помощью события jQuery onclick. Также вы уверены, что хотите выполнять побитовые операции & в ваших if, или логических и && ?

Проблема с вашим кодом заключается в том, что ваша функция не определена в глобальном контексте, а скорее определена внутри функции обратного вызова document.ready. Таким образом, когда браузер получает onclick и выполняет оценку вашей строки, он не находит это имя функции в глобальном контексте. Вы можете исправить это несколькими способами:

1) Измените свою функцию, которая будет определена в глобальной области, например:

2) Переместите функцию _finalvalidate() вне document.ready() , чтобы она была в глобальной области. Нет никаких оснований для того, чтобы он находился в document.ready() , потому что он не выполняется сразу.

3) Перейдите к способу "jQuery" для указания обработчиков событий вместо того, чтобы помещать onclick = xxx в ваш HTML, как показывает Кори в его ответе.

Здравствуйте! Сегодня столкнулся с такой проблемой: в приведенном ниже примере я включаю кусок скрипта, в котором объявляю функцию priorityClicked(). Эту функцию я хочу использовать в дальнейшем, при клике на некоторую область. Для чего вызываю её в атрибуте onclick="". Однако функция не работает и консоль выдаёт ошибку "Uncaught ReferenceError: priorityClicked is not defined". Долго рылся в гугле — ничего дельного не нашел кроме подозрения в том, что функция определена не в глобальной области видимости. Как это исправить?