Krok 1: kwadraty z elementów

Kalendarz z elementów DOM - Kalendarz w JavaScript krok po kroku (HTML/CSS/JS)

`document.createElement('div')` tworzy nowy, jeszcze niewidoczny element, `textContent` wpisuje do niego liczbę, a `append` wstawia go na koniec `#calendar`. Nie ma napisu z HTML do sklejania, więc nie da się zgubić cudzysłowu ani znacznika zamykającego.

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="utf-8">
  <title>Kalendarz</title>
  <style>
    body { font-family: sans-serif; max-width: 36em; line-height: 1.4; }
    input, select, button, textarea { font: inherit; padding: 0.2em 0.4em; }
    table { border-collapse: collapse; }
    th, td { border: 1px solid #94a3b8; padding: 0.2em 0.6em; }

    #calendar { display: grid; grid-template-columns: repeat(7, 40px); gap: 6px; }
    #calendar div { height: 40px; line-height: 40px; text-align: center; background: lightgrey; }
    #calendar .day-name { background: darkgrey; color: white; }
    #calendar .saturday { background: lightblue; color: white; }
    #calendar .sunday { background: steelblue; color: white; }
    #calendar .none { background: white; }
    #calendar .today { background: crimson; color: white; }
    #calendar .day { cursor: pointer; }
    #calendar .selected { outline: 3px solid #f59e0b; }
    .bar { display: flex; align-items: center; gap: 0.5em; width: 316px; }
    .bar strong { flex: 1; text-align: center; }
    table.cal td, table.cal th { width: 2.2em; text-align: center; }
    table.cal .saturday, table.cal .sunday { color: steelblue; }
    table.cal .today { background: crimson; color: white; }
  </style>
</head>
<body>
  <div id="calendar"></div>
  <script>
    const calendar = document.getElementById('calendar');
    for (let i = 1; i <= 31; i++) {
      const div = document.createElement('div');
      div.textContent = i;
      calendar.append(div);
    }
  </script>
</body>
</html>

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Kalendarz w JavaScript krok po kroku·Zaloguj się, aby zapisać postęp na koncie.