zoukankan      html  css  js  c++  java
  • 纯js实现日期选取功能

    平年:

      2月-->28天

      4,6,9,11月-->30天

      1,3,5,7,8,10,12月-->31天

    闰年:

      2月-->29天

      4,6,9,11月-->30天

      1,3,5,7,8,10,12月-->31天

    闰年的计算方式:

      1、年份/100

      2、如果 年份/100有余数 , 年份/4 没有余数   是闰年

           如果 年份/100没余数 , 年份/400 没有余数   是闰年

    function year(years){
        return years%100 == 0 ? (years%400 == 0 ? 1 : 0) : (years%4 == 0 ? 1 : 0);//判断闰年;如果是闰年返回1,平年返回0
        }
        function day(mouths, fn){//fn --> year()函数
            if(fn == 1 && mouths == 2){
                return 29;
            }else{
                if(mouths == 2){
                    return 28;
                }else if(mouths == 4 || 6 || 7 || 9 || 11){//4 6 7 9 11 -> 30
                    return 30;
                }else{
                    return 31;
                }
            }
        }

    下面是全部代码:

    html:

    <div id="datebox"></div><!--选完日期后填入的地方-->
    <div style="display: flex;">
        <div class="years">
            
        </div>
        <div class="mouth" style="display: none">
                
        </div>
        <div class="day" style="display: none">
            
        </div>
    </div>

    css:

    <style>
        .years,.mouth,.day{
            width: 90px;
            height: 200px;
            overflow-y: scroll;
        }
    </style>

    javascript:

    var startYear = 1918;
        var years = document.getElementsByClassName('years')[0];
        var mouth = document.getElementsByClassName('mouth')[0];
        var days = document.getElementsByClassName('day')[0];
        for(var k = startYear; k <= 2017; k++){
            var node = createNode(k);
            years.appendChild(node);
        }
        for(var m = 1; m <= 12; m++){
            var node = createNode(m);
            mouth.appendChild(node);
        }
        function createDay(option){
            for(var i = 1; i <= option; i++){
                var node = createNode(i);
                days.appendChild(node);
            }
        }
        function createNode (num){
            var node = document.createElement('a');
            node.innerHTML = num;
            node.style.display = 'block';
            return node;
        }
        function year(years){
            return years%100 == 0 ? (years%400 == 0 ? 1 : 0) : (years%4 == 0 ? 1 : 0);
        }
        function day(mouths, fn){
            if(fn == 1 && mouths == 2){
                return 29;
            }else{
                if(mouths == 2){
                    return 28;
                }else if(mouths == 4 || 6 || 7 || 9 || 11){//4 6 7 9 11 -> 30
                    return 30;
                }else{
                    return 31;
                }
            }
        }
        years.addEventListener('click', function(e){
            var temps = [];
            temps.push(e.target.innerHTML);
            mouth.style.display = 'block';
            mouth.addEventListener('click', function(e){
                temps.push(e.target.innerHTML);
                days.style.display = 'block';
                createDay(day(temps[1], year(temps[2])));
                days.addEventListener('click', function(e){
                    temps.push(e.target.innerHTML);
                    var dates = temps[0] + '年' + temps[1] + '月' + temps[2] + '日';
                    datebox.innerHTML = dates;
                    this.style.display = 'none';
                    mouth.style.display = 'none';
                    years.style.display = 'none';
                })
            })
        })
  • 相关阅读:
    vue Can't resolve 图片
    TP-LINK WR740N中继设置,AP设置,设置后不能上网,亲测有效
    vue VSCode 开发设置(html自动补全、eslint保存时格式化、vetur 格式化html)
    不再手写import
    vscode vuter的快捷键 关键字
    prototype是什么?
    真有效值与有效值概念
    现代文经典
    古文经典
    最后,我想对你说一句:我爱你
  • 原文地址:https://www.cnblogs.com/guojikun/p/6703686.html
Copyright © 2011-2022 走看看