回到课程

创建一个日历

重要程度: 4

编写一个函数 createCalendar(elem, year, month)

调用后会创建一个日历并添加到 elem

日历应该是一个 table,每一周用 <tr> 表示,每一天用 <td> 表示。table 顶部是 <th> 表示周几:第一天应该是星期一,直到星期日。

例如,createCalendar(cal, 2012, 9) 应该在 cal 生成一个日历,如下:

P.S. 这里只要生成一个展示日历就好,不需要点击交互功能。

打开一个任务沙箱。

我们用字符串创建 table:"<table>...</table>",然后派发给 innerHTML

算法如下:

  1. 通过 <th> 创建 table 头和周末名字。
  2. 创建一个日期对象 d = new Date(year, month-1)。它是月份的第一天(注意 JavaScript 计算月份是从 0 开始,而不是 1)。
  3. 将每月第一天的日期生成单元格,直到月份的第一天 d.getDay() 是空的。然后将它们填充到 <td></td>
  4. 天数增长 dd.setDate(d.getDate()+1)。如果 d.getMonth() 不是下一个月,就添加新单元格 <td> 到日历表中,如果那天是星期日,就添加一行 “</tr><tr>”
  5. 如果天数遍历完但 table 没有填满,就用空的 <td> 补齐。

使用沙箱打开解决方案。