@Gor321

Ошибка в коде при переключении месяца в календаре?

Здравствуйте! Помогите пожалуйста устранить ошибку при переключении месяца в календаре на чистом js.
В консоле выдает Uncaught TypeError: next is not a function
https://jsfiddle.net/furcifer21/6bac25ms/11/

И еще маленький вопросик, буду рад если подскажите.
Как выделить при помощи класса текущее число, не выходит
добавляю
if (currDay === today.getDate() && year === today.getFullYear() && month === today.getMonth()) {
				currDay.classList.add("today");
			}

но не работает.
Заранее большое спасибо!
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
В консоле выдает Uncaught TypeError: next is not a function

Вы обработчики подключили инлайново, а по умолчанию jsfiddle оборачивает код в window.onload - вот они и отсутствуют в глобальной области видимости. Либо назначайте обработчики с помощью addEventListener; либо в верхней части окна с js кодом есть выпадающее меню, открываете его, находите пункт "load type", выставляете значение "No wrap - bottom of < body >".

Как выделить при помощи класса текущее число, не выходит
добавляю...

Это безумие - currDay является датой, а вы пытаетесь работать с ней как с DOM нодой, classList.add, бред какой-то. Ну и само условие неправильное - год и месяц вы всегда при проверке используете одни и те же, где тут currDay? Должен быть. А проверка числа - ещё одно безумие, вы его сравниваете с объектом даты.

Кроме того, есть ещё косяк с генерацией элементов календаря, у вас там условие currDay.getMonth() <= month. Представьте, что следующий месяц - январь, год кончается. Что будет с вашим условием? Правильно, оно останется истинным. Навсегда. Лучше сделать так: проверяете равенство, без "меньше", а while заменяете на do-while - тогда числа предыдущего месяца, формально не подходящие под условие, всё равно будут обработаны, так как тело цикла выполняется до проверки условия.

исправлено
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы