Š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:
<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:
#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:
let 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:
next.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:
prev.addEventListener('click', function() {
draw(body, getPrevYear(year, month), getPrevMonth(month));
});
Implementujte funkci tlačítek pro změnu měsíce.
Zařiďte, aby informace nad kalendářem odpovídala zobrazenému měsíci a roku.