当前位置:首页 > JavaScript

js实现日历

2026-01-12 13:23:12JavaScript

实现日历的基本思路

使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。

获取当前日期信息

通过Date对象获取当前年份、月份和日期:

const date = new Date();
const currentYear = date.getFullYear();
const currentMonth = date.getMonth();
const currentDay = date.getDate();

计算月份天数

使用Date对象计算某个月份的天数:

function getDaysInMonth(year, month) {
  return new Date(year, month + 1, 0).getDate();
}

计算月份起始星期

确定月份第一天是星期几:

function getFirstDayOfMonth(year, month) {
  return new Date(year, month, 1).getDay();
}

生成日历表格

创建表格并填充日期单元格:

function generateCalendar(year, month) {
  const daysInMonth = getDaysInMonth(year, month);
  const firstDay = getFirstDayOfMonth(year, month);

  let date = 1;
  let html = '<table><tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr><tr>';

  // 填充空白单元格
  for (let i = 0; i < firstDay; i++) {
    html += '<td></td>';
  }

  // 填充日期单元格
  for (let i = firstDay; i < 7; i++) {
    html += `<td>${date}</td>`;
    date++;
  }
  html += '</tr>';

  // 填充剩余行
  while (date <= daysInMonth) {
    html += '<tr>';
    for (let i = 0; i < 7 && date <= daysInMonth; i++) {
      html += `<td>${date}</td>`;
      date++;
    }
    html += '</tr>';
  }

  html += '</table>';
  return html;
}

添加月份切换功能

实现月份切换按钮和逻辑:

let currentYear = new Date().getFullYear();
let currentMonth = new Date().getMonth();

function updateCalendar() {
  document.getElementById('calendar').innerHTML = generateCalendar(currentYear, currentMonth);
  document.getElementById('month-year').textContent = `${currentYear}年 ${currentMonth + 1}月`;
}

document.getElementById('prev').addEventListener('click', () => {
  currentMonth--;
  if (currentMonth < 0) {
    currentMonth = 11;
    currentYear--;
  }
  updateCalendar();
});

document.getElementById('next').addEventListener('click', () => {
  currentMonth++;
  if (currentMonth > 11) {
    currentMonth = 0;
    currentYear++;
  }
  updateCalendar();
});

完整HTML结构

配套的HTML基础结构:

<div id="calendar-container">
  <div id="header">
    <button id="prev">上个月</button>
    <h2 id="month-year"></h2>
    <button id="next">下个月</button>
  </div>
  <div id="calendar"></div>
</div>

样式美化建议

添加基本CSS样式增强视觉效果:

js实现日历

table {
  border-collapse: collapse;
  width: 100%;
}
th, td {
  border: 1px solid #ddd;
  padding: 8px;
  text-align: center;
}
th {
  background-color: #f2f2f2;
}
#header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
}

高级功能扩展

  1. 添加日期点击事件处理
  2. 实现日程标记功能
  3. 支持周视图切换
  4. 添加节假日特殊样式
  5. 实现日期范围选择

这些基础代码提供了日历的核心功能,可以根据需求进一步扩展和完善。

标签: 日历js
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

css制作日历

css制作日历

使用CSS Grid布局制作日历 日历的布局适合使用CSS Grid实现,因其天然的行列结构。以下是一个基础日历的HTML和CSS代码: <div class="calendar">…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…