<style>
* {
margin: 0;
padding: 0;
}
h1 {
width: 700px;
margin: 100px auto 10px;
}
div {
width: 700px;
min-height: 30px;
margin: 0 auto;
}
#hd {
width: 700px;
height: 30px;
display: flex;
justify-content: space-between;
}
#hd li {
width: 100px;
height: 30px;
list-style: none;
background-color: #000;
color: #fff;
text-align: center;
line-height: 30px;
}
#list {
width: 700px;
min-height: 30px;
display: flex;
flex-wrap: wrap;
}
#list li {
box-sizing: border-box;
width: 100px;
height: 30px;
background-color: #000;
list-style: none;
text-align: center;
line-height: 30px;
color: #fff;
}
p {
width: 700px;
margin: 10px auto 0;
display: flex;
justify-content: space-between;
}
p span {
font-size: 30px;
cursor: pointer;
}
</style>
<body>
<p id="ym"></p>
<p id="time"></p>
<div>
<ul id="hd">
<li>星期一</li>
<li>星期二</li>
<li>星期三</li>
<li>星期四</li>
<li>星期五</li>
<li>星期六</li>
<li>星期天</li>
</ul>
<ul id="list">
</ul>
</div>
<p>
<span class="prev"><</span>
<span class="next">></span>
</p>
<script>
var ym = document.querySelector("#ym");
var time = document.querySelector("#time");
var list = document.querySelector('#list');
var prev = document.querySelector(".prev");
var next = document.querySelector(".next");
var date = new Date();
// 获取年月日
var y1 = date.getFullYear();
var m1 = date.getMonth();
var d1 = date.getDate();
// 初始化页面
timerShow();
yearMonth();
draw(date);
// 定时更新时间
setInterval(function () {
timerShow();
}, 1000)
// 上个月
prev.addEventListener('click', function () {
date.setDate(0);
yearMonth();
draw();
})
// 下个月
next.addEventListener('click', function () {
date.setDate(33);
yearMonth();
draw();
})
// 渲染页面
function draw() {
var res = '';
// 获取更改后的年月日
var y2 = date.getFullYear();
var m2 = date.getMonth();
var d2 = date.getDate();
var NowDayArr = getNowDays(date);
var PrevDayArr = getPrevDays(date);
PrevDayArr.forEach(function (v) {
res += `<li style = "color: #666">${v}</li>`
});
NowDayArr.forEach(function (i, v) {
if (y1 === y2 && m1 === m2 && v === d1) {
res += `<li style = "border:1px solid red">${v}</li>`;
}else{
res += `<li>${v}</li>`;
}
});
for (let i = 1; i < 42 - (PrevDayArr.length + NowDayArr.length) + 1; i++) {
res += `<li style = "color: #666">${i}</li>`
}
list.innerHTML = res;
}
// 获取当前月的天数并存放
function getNowDays(time) {
var arr = [];
var date = new Date(time);
date.setDate(32);
date.setDate(0);
var MaxDay = date.getDate();
for (let i = 1; i < MaxDay + 1; i++) {
arr.push(i);
}
// 获取年和月
year = date.getFullYear();
month = date.getMonth() + 2;
return arr;
}
// 获取上个月的天数并存放
function getPrevDays(time) {
var date = new Date(time);
// 获取本月第一天周几
date.setDate(1);
var week = date.getDay();
if (week === 0) {
week = 7;
}
// 获得上个月的天数
var arr = [];
date.setDate(0);
var MaxDay = date.getDate();
// 获取年和月
year = date.getFullYear();
month = date.getMonth() + 2;
for (let i = MaxDay - week + 2; i < MaxDay + 1; i++) {
arr.push(i);
}
return arr;
}
// 封装年月
function yearMonth() {
var year = date.getFullYear();
var month = date.getMonth() + 1;
var ymStr = "";
ymStr += year + "-";
ymStr += month < 10 ? "0" + month : month;
ym.innerHTML = ymStr;
}
// 封装时间
function timerShow() {
var date = new Date();
var result = "";
date.getHours() < 10 ? result += "0" + date.getHours() + ":" : result += date.getHours() + ":";
date.getMinutes() < 10 ? result += "0" + date.getMinutes() + ":" : result += date.getMinutes() + ":";
date.getSeconds() < 10 ? result += "0" + date.getSeconds() : result += date.getSeconds();
time.innerHTML = result;
}
</script>
</body>