2012-03-24 2 views
1

Я пытаюсь разработать сборщик дат. Я готовлю весь календарь в строке JavaScript и добавлю его в элемент div. Проблема в том, что событие click jQuery ведет себя по-разному. Если я напишу весь код в файле .js по событию $(document).ready() и добавлю этот файл сценария вверху файла HTML, события щелчка не будут работать должным образом (значение, если я в марте месяце, если я нажму следующий , календарь переместится на следующий месяц апреля, но потом, когда я нажимаю на него, я всегда получаю старый месяц).JQuery ведет себя по-другому

Если я пишу весь скрипт в нижней части html-файла (после тега body), он работает нормально.

Когда я поместил этот код в jsFiddle. Там тоже работает. Я думаю, что они добавляют код сценария внизу страницы.

Что может быть неправильным, если код находится в обработчике событий $(document).ready()? Вот the jsFiddle link.

+0

У вас возникли ошибки JavaScript при работе с JS в верхней части HTML? – Jacob

+0

Нет. Это не дает никаких ошибок. Он работает нормально до первого щелчка .. Затем он не работает должным образом. –

ответ

0

Я предполагаю, что это происходит для вас в IE. Я смог воспроизвести его. Было показано, что браузер работает в режиме «quirks». Когда он находится в этом режиме, функция indexOf для Array не определена. Эта ошибка JavaScript препятствует правильному функционированию календаря. Исправлена ​​проблема переключения режима quirks.

Чтобы исправить это, вы можете убедиться, что у вас есть правильный DOCTYPE, определенный для страницы или имеющий метатег, такой как <meta http-equiv="X-UA-Compatible" content="IE=edge" />, который позволяет избежать режима причуд.

Я еще не уверен, почему перемещение скрипта запускает разные режимы. Возможно, кто-то еще на SO знает ответ на этот вопрос.

+0

Я запускаю его в IE 9 .. Он дает мне правильный индекс. Проблема в том, что когда когда-либо щелкнуть Затем я получаю имя месяца тега с идентификатором DP_MONTH, найдите индекс месяца из месяцаArray, а затем увеличьте его. $ ('# DP_MONTH'). text() поступает в первую очередь в первый клик. на подопечных, он всегда дает март, хотя тег имеет другое название месяца, так что он показывает апрельский месяц только на каждом следующем клике. Я надеюсь, что у меня есть моя точка ..... –

+0

Я не могу воспроизвести это. Не могли бы вы разместить свой HTML-код, чтобы мы могли видеть, как именно вы включаете свой скрипт, когда эта проблема начинает происходить? – Jacob

+0

Спасибо, я мог бы решить эту проблему по-другому ... Однако его работа прекрасна ... –

Смежные вопросы