<body>
<table>
<thead>
<tr>
<th>周天</th>
<th>周一</th>
<th>周二</th>
<th>周三</th>
<th>周四</th>
<th>周五</th>
<th>周六</th>
</tr>
</thead>
<tbody id="tb"></tbody>
</table>
<div>
<span class="prev"><</span>
<span class="next">></span>
</div>
<p></p>
<script>
// 获取现在的日期
var date = new Date();
// 获取年份
var year = date.getFullYear();
// 获取月份
var month = date.getMonth();
// 获取日期
var day = date.getDate();
// 获取tbody
var tb = document.querySelector("#tb");
// 获取显示年月的p
var ym = document.querySelector("p");
// 判断闰年
function leapYear(y) {
return (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) ? 1 : 0;
}
// 渲染到页面上: 封装draw函数
function draw(year, month) {
// 得到当月第一天为周几
var d = new Date();
d.setFullYear(year, month, 1);
var firstday = d.getDay();
// 存放当前年每月份的天数
var DayArr = [31, 28 + leapYear(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// 获取当前月的天数
var month_day_num = DayArr[month];
// 获取当月天数所占的表格行数
var tr_num = Math.ceil(((month_day_num + firstday) / 7));
var res = '';
for (let i = 0; i < tr_num; i++) {
res += "<tr>";
if (i == 0) {
for (let j = 0; j < 7; j++) {
// 计算每个格子日期
var idx = (i * 7 + j) - firstday + 1;
(j < firstday)? res+="<td></td>" : res += "<td>"+ idx +"</td>";
}
}
else {
for (let j = 0; j < 7; j++) {
// 存放日期
var idx = i * 7 + j - firstday + 1;
(idx <= month_day_num)? res +="<td>"+idx+"</td>" : res+="<td></td>";
}
}
res += "</tr>";
}
tb.innerHTML = res;
ym.innerHTML = (Number(year)) + "年" + Number(month + 1) + "月" + Number(day) + "日";
}
draw(year, month);
// 获取prev和next
var prev = document.querySelector(".prev");
var next = document.querySelector(".next");
prev.addEventListener('click', function () {
if (month > 0) {
month--;
draw(year, month);
} else {
month = 11;
year--;
draw(year, month);
}
})
next.addEventListener('click', function () {
if (month < 11) {
month++;
draw(year, month);
} else {
month = 0;
year++;
draw(year, month);
}
})
</script>
</body>