要创建一个只显示年月(年月视图)的JavaScript日历插件,你需要考虑以下几个基础概念:
Date
对象来获取和处理日期和时间。以下是一个简单的年月视图日历插件的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>年月日历</title>
<style>
.calendar {
width: 300px;
border: 1px solid #ccc;
padding: 10px;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
}
.months {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
}
.month {
text-align: center;
padding: 5px;
cursor: pointer;
}
.month:hover {
background-color: #f0f0f0;
}
</style>
</head>
<body>
<div class="calendar" id="calendar"></div>
<script>
function generateCalendar(year, month) {
const calendarDiv = document.getElementById('calendar');
calendarDiv.innerHTML = ''; // Clear previous calendar
const header = document.createElement('div');
header.className = 'header';
header.innerHTML = `<button onclick="prevMonth()">Prev</button> ${year}-${month.toString().padStart(2, '0')} <button onclick="nextMonth()">Next</button>`;
calendarDiv.appendChild(header);
const monthsContainer = document.createElement('div');
monthsContainer.className = 'months';
for (let m = 0; m < 12; m++) {
const monthDiv = document.createElement('div');
monthDiv.className = 'month';
monthDiv.textContent = new Date(year, m).toLocaleString('default', { month: 'long' });
monthDiv.onclick = () => selectMonth(year, m + 1);
monthsContainer.appendChild(monthDiv);
}
calendarDiv.appendChild(monthsContainer);
}
let currentDate = new Date();
let currentYear = currentDate.getFullYear();
let currentMonth = currentDate.getMonth() + 1; // getMonth() is zero-based
function prevMonth() {
currentMonth--;
if (currentMonth <= 0) {
currentMonth = 12;
currentYear--;
}
generateCalendar(currentYear, currentMonth);
}
function nextMonth() {
currentMonth++;
if (currentMonth > 12) {
currentMonth = 1;
currentYear++;
}
generateCalendar(currentYear, currentMonth);
}
function selectMonth(year, month) {
currentYear = year;
currentMonth = month;
generateCalendar(currentYear, currentMonth);
}
generateCalendar(currentYear, currentMonth);
</script>
</body>
</html>
toLocaleString
或其他方法正确格式化日期。通过以上步骤和代码示例,你可以创建一个基本的年月视图日历插件。根据具体需求,你可以进一步扩展功能,例如添加日期选择功能或与其他系统集成。
领取专属 10元无门槛券
手把手带您无忧上云