torna alle lezioni

Crea un calendario

importanza: 4

Scrivi una funzione createCalendar(elem, year, month).

La sua chiamata dovrebbe creare un calendario con il dato anno/mese e metterlo dentro a elem.

Il calendario dovrebbe essere una tabella dove una settimana è <tr> e un giorno è <td>. La cima della tabella dovrebbe essere un <th> con i nomi dei giorni: il primo giorno dovrebbe essere lunedì e così via fino a domenica.

Ad esempio, createCalendar(cal, 2012, 9) dovrebbe generare un elemento cal con il seguente calendario:

P.S. Per questa task è sufficiente creare il calendario, non è necessario che sia cliccabile.

Apri una sandbox per l'esercizio.

Creeremo una tabella come stringa, "<table>...</table>", e poi la assegneremo a innerHTML.

L’algoritmo:

  1. Crea il header della tabella con <th> e i nomi dei giorni.
  2. Crea l’oggetto data d = new Date(year, month-1). Questo è il primo giorno di month (prendendo in considerazione che in Javascript i mesi partono da 0, non da 1).
  3. Le prime celle fino al primo del mese d.getDay() sono vuote. Riempiamole con <td></td>.
  4. Aumentiamo il giorno in d: d.setDate(d.getDate()+1). Se d.getMonth() non è ancora il mese successivo, aggiungi la nuova cella <td> al calendario. Se questo è una domenica, aggiungi una nuova linea “</tr><tr>”.
  5. Se il mese è finito ma la fila della tabella non è ancora piena, aggiungi un <td> vuoto in modo da renderla rettangolare.

Apri la soluzione in una sandbox.