(JS)生成日历

1..mathMethods.js
//判断闰年
isLeapYear = (year) => {//传入年份,返回一个boolean值
    return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
}

2.Calendar.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta content="width=device-width, initial-scale=1.0" name="viewport">
    <title></title>
    <style>
        .clearfix:after {
            content: "";
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }

        .clearfix {
            *zoom: 1
        }

        .box {
            width: 502px;
            /*height: 500px;*/
            border: 1px solid red;


        }

        .innerDiv {
            width: 70px;
            height: 70px;
            text-align: center;
            line-height: 70px;
            border: 1px solid blue;
            float: left;
        }
    </style>
</head>
<body onload="generateCalendar()">
<div>
    <button id="lastMonth" onclick="change(-1)">上一月</button>
    <span id="nowMonth"></span>
    <button id="nextMonth" onclick="change(1)" value="下一月">下一月</button>
</div>
<div class="box clearfix"></div>

<script src="../../js/mathMethods.js"></script>
<script>
    let weeks = ["日", "一", "二", "三", "四", "五", "六"];
    let innerContent = document.querySelector('.box')
    let nowDate = new Date()
    document.querySelector('#nowMonth').innerText = nowDate.getFullYear() + '-' + ((nowDate.getMonth() + 1) < 10 ? '0' : '') + (nowDate.getMonth() + 1)

    function generateCalendar() {
        //赋第一排的星期
        for (let i = 0; i < weeks.length; i++) {
            innerContent.innerHTML += '<div class="innerDiv">' + weeks[i] + '</div>'
        }
        //1号前的空格子
        nowDate.setDate(1)
        let firstDayWeek = nowDate.getDay()//获取每月第一天的星期数
        for (let i = 0; i < firstDayWeek; i++) {
            innerContent.innerHTML += '<div class="innerDiv">' + '' + '</div>'
        }
        //计算本月有多少天
        let months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
        //计算二月的天数
        months[1] = isLeapYear(nowDate.getFullYear()) ? 29 : 28
        let days = months[nowDate.getMonth()]
        for (let i = 1; i <= days; i++) {
            innerContent.innerHTML += '<div class="innerDiv">' + i + '</div>'
        }
    }

    function change(i) {
        innerContent.innerHTML = '';        //先清空
        nowDate.setMonth(nowDate.getMonth() + i)
        document.querySelector('#nowMonth').innerText = nowDate.getFullYear() + '-' + ((nowDate.getMonth() + 1) < 10 ? '0' : '') + (nowDate.getMonth() + 1)
        generateCalendar()
    }

</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值