• JS写一个简单日历


    JS写一个日历,配合jQuery操作DOM

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Calendar</title>
        <style>
            * {
                margin: 0;
                padding: 0;
                list-style: none;
            }
    
            header {
                text-align: center;
                line-height: 40px;
            }
    
            main {
                margin-top: 100px;
            }
    
            main div {
                margin: 20px;
                text-align: center;
            }
    
            .full-date {
                margin: 0 20px;
                vertical-align: middle;
            }
    
            .left,
            .right {
                border: 1px solid #add8e6;
                padding: 5px 10px;
            }
    
            ul {
                margin: 0 40px 10px;
            }
    
            ul li {
                display: inline-block;
                 40px;
                text-align: center;
                line-height: 40px;
            }
    
            .title li {
                 35px;
            }
        </style>
    </head>
    
    <body>
        <header>
            简单日历
        </header>
        <main>
            <div>
                <span class="left"><</span>
                <span class="full-date">2019/1/1</span>
                <span class="right">></span>
            </div>
            <ul class="title">
                <li>日</li>
                <li>一</li>
                <li>二</li>
                <li>三</li>
                <li>四</li>
                <li>五</li>
                <li>六</li>
            </ul>
            <section id="date"></section>
        </main>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.js"></script>
        <script>
            const Calendar = { // 实现日历方法
                date: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
                now: new Date(),
                result: [],
                need: false,
                init(needOther) {
                    this.result = [];
                    this.need = needOther;
                    let data = [],
                        temp = [];
                    if (this.leapYear(this.now)) { // 根据是否是闰年修改日期数组
                        this.date[1] = 29;
                    } else {
                        this.date[1] = 28;
                    }
                    for (let i = 1; i <= this.date[this.now.getMonth()]; i++) { // 添加本月日期
                        data.push(i);
                    }
                    if (this.need) { // 是否需要其他日期
                        for (let i = 1; i <= this.getFirstWeek(this.now); i++) { // 添加上月日期
                            let num = 0;
                            if (this.now.getMonth() === 0) {
                                num = this.date[11];
                            } else {
                                num = this.date[this.now.getMonth() - 1];
                            }
                            data.unshift(num - i + 1);
                        }
                        for (let i = 1;; i++) { // 添加下月日期
                            if (data.length % 7 === 0) {
                                break;
                            } else {
                                data.push(i);
                            }
                        }
                    } else {
                        for (let i = 1; i <= this.getFirstWeek(this.now); i++) { // 添加上月空白日期
                            data.unshift('');
                        }
                    }
                    for (let i = 1; i <= data.length; i++) { // 转换为二维数组
                        temp.push(data[i - 1]);
                        if (i % 7 === 0) {
                            this.result.push(temp);
                            temp = [];
                        }
                    }
                    this.result.push(temp);
                },
                getFirstWeek(time) { // 获取每月1号是星期几
                    const date = new Date(time.getFullYear(), time.getMonth());
                    return date.getDay();
                },
                leapYear(time) { // 判断闰年
                    const year = new Date(time).getFullYear();
                    return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);
                },
                preMonth() { // 下个月
                    if (this.now.getMonth() === 0) {
                        this.now = new Date(this.now.getFullYear() - 1, 11, this.now.getDate());
                    } else {
                        this.now = new Date(this.now.getFullYear(), (this.now.getMonth()) - 1, this.now.getDate());
                    }
                    this.init(this.need);
                },
                nextMonth() { // 上个月
                    if (this.now.getMonth() === 11) {
                        this.now = new Date(this.now.getFullYear() + 1, 0, this.now.getDate());
                    } else {
                        this.now = new Date(this.now.getFullYear(), this.now.getMonth() + 1, this.now.getDate());
                    }
                    this.init(this.need);
                }
            }
            $(function () {
                Calendar.init();
                const render = () => {
                    const nowDate = Calendar.now;
                    $('.full-date').text(
                        `${nowDate.getFullYear()}/${nowDate.getMonth() + 1}/${nowDate.getDate()}`);
                    Calendar.result.forEach(item => {
                        let html = '<ul>';
                        item.forEach(data => {
                            html += `<li>${data}</li>`;
                        });
                        html += '</ul>';
                        $('#date').append(html);
                    });
                };
                render();
                $('.left').click(() => {
                    $('#date').empty();
                    Calendar.preMonth();
                    render();
                });
                $('.right').click(() => {
                    $('#date').empty();
                    Calendar.nextMonth();
                    render();
                });
            });
        </script>
    </body>
    
    </html>
    
  • 相关阅读:
    NX二次开发-UFUN UF_UI_add_to_class_sel将UDOTestClass类的显示名称加入到类选择对话框的类列表中
    NX二次开发-UFUN创建管道UF_MODL_create_tube
    NX二次开发-UFUN获得工作视图的tag UF_VIEW_ask_work_view
    SQLyog/Mysql怎么修改用户/root密码【转载】
    MySQL返回来的值都是字符串类型,还原每个字段【转载】
    NX二次开发-NX访问MySQL数据库(增删改查)
    NX二次开发-ug表达式函数ug_find_file读取当前prt所在路径【转发】
    QT界面开发-QProgressBar【转载】
    QT界面开发-使用new QComboBox添加触发事件
    QT界面开发-窗口滚动条【转发】
  • 原文地址:https://www.cnblogs.com/ljwk/p/10321630.html
Copyright © 2020-2023  润新知