javascript:カレンダーをつくろう

JS

JavaScriptを使用して、HTMLとCSSと組み合わせて簡単なカレンダーを作成することができます。以下に、JavaScriptを使ってカレンダーを作成する方法の例を示します。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript Calendar - 1 Year</title>
<style>
  .calendar {
    font-family: Arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
    margin-bottom: 20px;
  }
  .calendar th, .calendar td {
    border: 1px solid #dddddd;
    text-align: center;
    padding: 8px;
  }
  .calendar th {
    background-color: #f2f2f2;
  }
  .calendar td {
    cursor: pointer;
  }
  .calendar td:hover {
    background-color: #f0f0f0;
  }
</style>
</head>
<body>

<h2>JavaScript Calendar - 1 Year</h2>

<div id="calendars"></div>

<script>
  // カレンダーを表示する関数
  function displayCalendar(year, month, container) {
    const daysInMonth = new Date(year, month + 1, 0).getDate();
    const firstDayOfMonth = new Date(year, month, 1).getDay();
    const calendarTable = document.createElement("table");
    calendarTable.classList.add("calendar");
    calendarTable.innerHTML = `
      <thead>
        <tr>
          <th colspan="7">${new Date(year, month, 1).toLocaleString('default', { month: 'long' })} ${year}</th>
        </tr>
        <tr>
          <th>Sun</th>
          <th>Mon</th>
          <th>Tue</th>
          <th>Wed</th>
          <th>Thu</th>
          <th>Fri</th>
          <th>Sat</th>
        </tr>
      </thead>
      <tbody>
      </tbody>
    `;
    const tbody = calendarTable.querySelector("tbody");
    let date = 1;
    for (let i = 0; i < 6; i++) {
      const row = document.createElement("tr");
      for (let j = 0; j < 7; j++) {
        if (i === 0 && j < firstDayOfMonth) {
          const cell = document.createElement("td");
          row.appendChild(cell);
        } else if (date > daysInMonth) {
          break;
        } else {
          const cell = document.createElement("td");
          cell.textContent = date;
          cell.addEventListener("click", function() {
            alert(`Clicked on ${year}-${month + 1}-${this.textContent}`);
          });
          row.appendChild(cell);
          date++;
        }
      }
      tbody.appendChild(row);
    }
    container.appendChild(calendarTable);
  }

  // 1年分のカレンダーを表示
  const calendarsContainer = document.getElementById("calendars");
  const currentYear = new Date().getFullYear();
  for (let i = 0; i < 12; i++) {
    displayCalendar(currentYear, i, calendarsContainer);
  }
</script>

</body>
</html>

コメント

タイトルとURLをコピーしました