HTML实现日历编写
输出效果展示
HTML代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>test</title>
<style>
table {
width: 500px;
margin: auto;
text-align: center;
border: 2px solid pink;
}
th,
td {
border: 2px solid pink;
padding:5px
}
.today {
color: red;
}
</style>
<script>
//判断当前年份是否是闰年(闰年2月份有29天,平年2月份只有28天)
function isLeap(year) {
return year % 4 == 0 ? (year % 100 != 0 ? 1 : (year % 400 == 0 ? 1 : 0)) : 0;
}
var i, k,
//获取今日日期
today = new Date(),
//获取年份
y = today.getFullYear(),
//获取月份(注意:月份从0开始计算,获取的值比正常月份少1)
m = today.getMonth(),
//获取日期中的日(方便在建立日期表格时高亮显示当天)
d = today.getDate(),
//获取当月的第一天
firstday = new Date(y, m, 1),
//判断第一天是星期几(返回[0-6]中的一个,0代表星期天,1代表星期一,以此类推)
dayOfWeek = firstday.getDay(),
//创建月份数组
days_per_month = new Array(31, 28 + isLeap(y), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
//确定日期表格所需的行数
str_nums = Math.ceil((dayOfWeek + days_per_month[m]) / 7);
document.write("<table cellspacing='0'><tr><td colspan ='7'>" + y + "年" + (m + 1) + "月" + "</td></tr>");
//打印表格第一行(显示星期)
document.write("<tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>");
//二维数组创建日期表格
for(i = 0; i < str_nums; i += 1) {
document.write('<tr>');
for(k = 0; k < 7; k++) {
//为每个表格创建索引,从0开始
var idx = 7 * i + k;
//将当月的1号与星期进行匹配
var date = idx - dayOfWeek + 1;
//索引小于等于0或者大于月份最大值就用空表格代替
(date <= 0 || date > days_per_month[m]) ? date = ' ': date = idx - dayOfWeek + 1;
//高亮显示当天
date == d ? document.write('<td class="today">' + date + '</td>') : document.write('<td>' + date + '</td>');
}
document.write('</tr>');
}
document.write('</table>');
</script>
</head>
<body>
<script src="./js/jquery-3.4.1.min.js"></script>
</body>
</html>
<!DOCT