<script>
//var一个新的日期
var date = new Date();
//调用头部
renderHead(date);
//调用身体
renderUl(date);
//上下翻页
$('prev').onclick = function () {
//设置天数 这个月第一天
date.setDate(1);
//月数减一
date.setMonth(date.getMonth() - 1);
renderHead(date);
renderUl(date);
}
$('next').onclick = function () {
date.setDate(1);
date.setMonth(date.getMonth() + 1);
renderHead(date);
renderUl(date);
}
// 1.渲染头部
function renderHead(date) {
//获取当前时间
var date = new Date(date);
//获取年份
var y = date.getFullYear();
// 获取月份,因为月份从0开始,则月份需要加1
var m = date.getMonth() + 1;
// 把年和月放在网页中
$('current').innerHTML = y + '-' + m
}
// 2.渲染身体
function renderUl(date) {
// 得到上个月的天数
var prevDays = getPrevDays(date);
console.log(prevDays);
var res = '';
//i从0开始 小于这个数组的长度
for (var i = 0; i < prevDays.length; i++) {
//根据角标遍历数组里面的值
res += `<li style = "color:blown">${prevDays[i]}</li>`
}
//得到本月的天数
var nowDays = getNowDays(date);
console.log(nowDays);
for (var i = 0; i < nowDays.length; i++) {
res += `<li style="color:black;">${nowDays[i]}</li>`
}
//得到下个月的天数
//减去上个月和这个月的天数
var nextMaxDay = 42 - prevDays.length - nowDays.length;
console.log(nextMaxDay)
for (var i = 1; i <= nextMaxDay; i++) {
res += `<li style = "color:blown">${i}</li>`
}
$('content').innerHTML = res;
}
// 得到上个月的天数
function getPrevDays(date) {
// 创建一个新的当前日期
var date = new Date(date);
// 回到上个月最后一天
date.setDate(0);
// 获取最后一天的天数
var maxdate = date.getDate();
//此时是上个月的最后一天,想要获取本月的第一天的星期数就把星期数加一
var week = date.getDay() + 1;
//上月在本月开始的天数
var start = maxdate - week + 2;
var arr = [];
// 遍历输出上个月在本月的天数
for (var i = start; i <= maxdate; i++) {
arr.push(i);
}
return arr
}
//获得本月的天数 把月份推到下个月 把本月的天数加1
function getNowDays(date) {
var date = new Date(date);
date.setDate(1);
// 把月份推到下个月
date.setMonth(date.getMonth() + 1);
//回到这个月的最后一天
date.setDate(0);
//获取这一天的天数
var maxday = date.getDate();
var arr = [];
for (var i = 1; i <= maxday; i++) {
arr.push(i);
}
return arr
}
function $(ele) {
return document.getElementById(ele)
}
</script>