当前位置:首页 > JavaScript

js实现台历

2026-02-01 05:42:13JavaScript

实现台历的 JavaScript 方法

使用 JavaScript 实现台历可以通过动态生成日历表格、处理日期逻辑以及添加交互功能来完成。以下是具体实现步骤:

基础 HTML 结构

创建一个简单的 HTML 结构用于承载日历:

<div id="calendar">
  <div class="calendar-header">
    <button id="prev-month">上一月</button>
    <h2 id="current-month"></h2>
    <button id="next-month">下一月</button>
  </div>
  <table id="calendar-body">
    <thead>
      <tr>
        <th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th>
      </tr>
    </thead>
    <tbody></tbody>
  </table>
</div>

JavaScript 核心逻辑

通过 JavaScript 动态生成日历内容并处理月份切换:

js实现台历

document.addEventListener('DOMContentLoaded', function() {
  let currentDate = new Date();
  const monthDisplay = document.getElementById('current-month');
  const calendarBody = document.querySelector('#calendar-body tbody');

  function renderCalendar(date) {
    const year = date.getFullYear();
    const month = date.getMonth();
    monthDisplay.textContent = `${year}年${month + 1}月`;

    const firstDay = new Date(year, month, 1);
    const lastDay = new Date(year, month + 1, 0);
    const startingDay = firstDay.getDay();

    calendarBody.innerHTML = '';
    let dateNum = 1;

    for (let i = 0; i < 6; i++) {
      const row = document.createElement('tr');
      for (let j = 0; j < 7; j++) {
        const cell = document.createElement('td');
        if (i === 0 && j < startingDay) {
          cell.textContent = '';
        } else if (dateNum > lastDay.getDate()) {
          break;
        } else {
          cell.textContent = dateNum;
          dateNum++;
        }
        row.appendChild(cell);
      }
      calendarBody.appendChild(row);
    }
  }

  document.getElementById('prev-month').addEventListener('click', function() {
    currentDate.setMonth(currentDate.getMonth() - 1);
    renderCalendar(currentDate);
  });

  document.getElementById('next-month').addEventListener('click', function() {
    currentDate.setMonth(currentDate.getMonth() + 1);
    renderCalendar(currentDate);
  });

  renderCalendar(currentDate);
});

样式增强

添加基本 CSS 样式提升视觉效果:

#calendar {
  width: 300px;
  font-family: Arial, sans-serif;
}
.calendar-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}
#calendar-body {
  width: 100%;
  border-collapse: collapse;
}
#calendar-body th, #calendar-body td {
  border: 1px solid #ddd;
  padding: 8px;
  text-align: center;
}
#calendar-body th {
  background-color: #f2f2f2;
}

高级功能扩展

添加日期点击事件

js实现台历

calendarBody.addEventListener('click', function(e) {
  if (e.target.tagName === 'TD' && e.target.textContent) {
    alert(`选中日期: ${currentDate.getFullYear()}年${currentDate.getMonth()+1}月${e.target.textContent}日`);
  }
});

标记当前日期renderCalendar 函数中添加:

const today = new Date();
if (year === today.getFullYear() && month === today.getMonth() && dateNum-1 === today.getDate()) {
  cell.classList.add('today');
}

配套 CSS:

.today {
  background-color: #ffeb3b;
  font-weight: bold;
}

响应式设计

通过媒体查询适配移动设备:

@media (max-width: 600px) {
  #calendar {
    width: 100%;
  }
  #calendar-body th, #calendar-body td {
    padding: 4px;
    font-size: 14px;
  }
}

完整实现方案

将上述代码片段组合后,即可实现一个功能完整的 JavaScript 台历,包含月份切换、日期显示、当前日期标记和点击交互等功能。可根据需要进一步扩展添加节假日标记、日程提醒等高级功能。

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

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js实现左右滑动

js实现左右滑动

实现左右滑动的 JavaScript 方法 监听触摸事件 通过 touchstart、touchmove 和 touchend 事件来检测用户的手势操作。记录触摸的起始位置和移动距离,判断滑动方向。…