Create a calendar
importance: 4
Write a function createCalendar(elem, year, month)
.
The call should create a calendar for the given year/month and put it inside elem
.
The calendar should be a table, where a week is <tr>
, and a day is <td>
. The table top should be <th>
with weekday names: the first day should be Monday, and so on till Sunday.
For instance, createCalendar(cal, 2012, 9)
should generate in element cal
the following calendar:
P.S. For this task it’s enough to generate the calendar, should not yet be clickable.
We’ll create the table as a string: "<table>...</table>"
, and then assign it to innerHTML
.
The algorithm:
- Create the table header with
<th>
and weekday names. - Create the date object
d = new Date(year, month-1)
. That’s the first day ofmonth
(taking into account that months in JavaScript start from0
, not1
). - First few cells till the first day of the month
d.getDay()
may be empty. Let’s fill them in with<td></td>
. - Increase the day in
d
:d.setDate(d.getDate()+1)
. Ifd.getMonth()
is not yet the next month, then add the new cell<td>
to the calendar. If that’s a Sunday, then add a newline“</tr><tr>”
. - If the month has finished, but the table row is not yet full, add empty
<td>
into it, to make it square.