<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>日历表</title><style>#day,#week {display: grid;grid-template-columns: repeat(7, 1fr);gap: 4px;width: 280px;}#day div,#week div {height: 40px;display: flex;align-items: center;justify-content: center;border: 1px solid #ccc;}</style>
</head><body><button id="addMonth">加一月</button><button id="subMonth">减一月</button><br>当前年月为:<span id="year"></span>年<span id="month"></span>月<br><div id="week"><div>一</div><div>二</div><div>三</div><div>四</div><div>五</div><div>六</div><div>日</div></div><div id="day"></div><script>var addMonth = document.getElementById('addMonth');var subMonth = document.getElementById('subMonth');var yearDom = document.getElementById('year');var monthDom = document.getElementById('month');var dayDom = document.getElementById('day');var date = new Date();var year = date.getFullYear();var month = date.getMonth() + 1;function formartData(year, month) {var date_01 = new Date(`${year}/${month}/01`);var weekday_01 = parseInt(date_01.getDay());var monthDays = new Date(year, month, 0).getDate();var mut = [];var max = weekday_01;if (weekday_01 == 0) {max = 7;}for (var i = 1; i < max; i++) {mut.push('');}for (var j = 1; j <= monthDays; j++) {mut.push(j);}const space_day = weekday_01 == 0 ? 6 : weekday_01 - 1const obj = {'当前年月为:': year + '-' + month,'当前月共有天数为:': monthDays,'当前月第一天星期为:': weekday_01,'当前月第一天需要补空格数为:': space_day,'当前月的数组为:': mut}console.log(obj)yearDom.innerText = year;monthDom.innerText = month;let num = ''if (mut.length <= 35) {num = 35 - mut.length} else {num = 42 - mut.length}for (var i = 0; i < num; i++) {mut.push('')}dayDom.innerHTML = '';mut.forEach(day => {const div = document.createElement('div');div.textContent = day || '';dayDom.appendChild(div);});}window.onload = function () {formartData(year, month);}addMonth.onclick = function () {month++;if (month > 12) {month = 1;year++;}formartData(year, month);}subMonth.onclick = function () {month--;if (month < 1) {month = 12;year--;}formartData(year, month);}</script>
</body></html>