Šipky pro změnu měsíce v kalendáři na JavaScriptu

Pojďme nyní pod kalendář přidat šipky pro změnu měsíce. Proveďme změny v HTML kódu:

html<div id="parent">
  <div id="calendar">
    <div class="info">Led 2020</div>
    <table>
      <thead>
        <tr>
          <th>po</th>
          <th>út</th>
          <th>st</th>
          <th>čt</th>
          <th>pá</th>
          <th>so</th>
          <th>ne</th>
        </tr>
      </thead>
      <tbody class="body"></tbody>
    </table>
    <div class="nav">
      <a href="#" class="prev">←</a>
      <a href="#" class="next">→</a>
    </div>
  </div>
</div>

Proveďme změny v CSS kódu:

css#parent {
  text-align: center;
}
#calendar {
  display: inline-block;
}
#calendar td, #calendar th {
  padding: 10px;
  border: 1px solid black;
  text-align: center;
}

#calendar .nav, #calendar .info {
  text-align: center;
}
#calendar a {
  color: blue;
  font-size: 25px;
  text-decoration: none;
}
#calendar a:hover {
  color: red;
}

#calendar .active {
  color: red;
}

Získáme odkazy na šipky do proměnných:

javascriptlet prev = calendar.querySelector('.prev');
let next = calendar.querySelector('.next');

Diskuse

Pojďme nyní diskutovat o tom, jak úlohu řešit. Ve skutečnosti je kód našeho kalendáře napsán dobře rozšiřitelným způsobem: máme funkci draw, která vykresluje kalendář pro zadaný měsíc. Takže při kliknutí na šipku můžeme překreslit kalendář s jiným číslem měsíce (a možná roku).

Zde je příklad toho, co můžeme udělat po kliknutí na šipku následujícího měsíce:

javascriptnext.addEventListener('click', function() {
  draw(body, getNextYear(year, month), getNextMonth(month));
});

Jak vidíte, zde se používají funkce getNextYear a getNextMonth. Pojďme diskutovat o tom, co by měly dělat.

Jak název napovídá, funkce getNextYear získá následující rok. Zde se myslí to, že pokud je nyní prosinec, pak při přepnutí na následující měsíc by se rok měl zvýšit o 1. Pokud však nyní není prosinec, funkce by měla jednoduše vrátit aktuální rok.

Funkce getNextMonth by měla získat následující měsíc. Pro všechny měsíce kromě prosince bude k číslu měsíce přidávat jedničku. No a pro prosinec bude následujícím měsícem leden s číslem 0.

Podobné operace by se měly provést při kliknutí na tlačítko předchozího měsíce:

javascriptprev.addEventListener('click', function() {
  draw(body, getPrevYear(year, month), getPrevMonth(month));
});
Задание 1

Implementujte funkci tlačítek pro změnu měsíce.

Задание 2

Zařiďte, aby informace nad kalendářem odpovídala zobrazenému měsíci a roku.