Напишите функцию, которая умеет генерировать календарь для заданной пары (месяц, год).
Календарь должен быть таблицей, где каждый день — это TD. У таблицы должен быть заголовок с названиями дней недели, каждый день — TH.
Синтаксис: createCalendar(id, year, month).
Такой вызов должен генерировать текст для календаря месяца month в году year, а затем помещать его внутрь элемента с указанным id.
Например: createCalendar("cal", 2012, 9) сгенерирует в <div id='cal'></div> следующий календарь:
Начальный документ со стилями: tutorial/date/calendar_src.html
P.S. Достаточно сгенерировать календарь, кликабельным его делать не нужно.
Для решения задачи сгенерируем таблицу в виде строки: "<table>...</table>", а затем присвоим в innerHTML.
Алгоритм:
- Создать объект даты
d = new Date(year, month-1). Это первый день месяцаmonth(с учетом того, что месяцы в JS начинаются от 0, а не от 1). - Ячейки первого ряда пустые от начала и до дня недели
d.getDay(), с которого начинается месяц. Создадим их. - Увеличиваем день в
dна единицу:d.setDate(d.getDate()+1), и добавляем в календарь очередную ячейку, пока не достигли следующего месяца. При этом последний день недели означает вставку перевода строки"</tr><tr>". - При необходимости, если календарь окончился не на воскресенье - добавить пустые
TDв таблицу, чтобы было все ровно.
Код решения находится здесь: tutorial/date/calendar_rus.html