ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js 万年历实现

2019-04-30 17:49:47  阅读:216  来源: 互联网

标签:document option val 实现 js height width var 万年历


直接上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>js---万年历</title>
    <style type="text/css">
        *{
            margin:0px;
            padding:0px;
            list-style-type:none;
        }
        #box{
            width:450px;
            height:380px;
            border:2px solid #3399ff;
            margin:100px auto 0px;
            border-radius:5px;
        }
        #top{
            width:100%;
            height:50px;
            border-bottom:1px solid #3399ff;
            font-size:15px;
        }
        #year{
            margin:15px 10px;

        }
        #year,#month{
            text-align:center;
            margin-right:15px;
        }
        #con{
            width:420px;
            height:300px;
            margin:0px auto 0px;
        }
        #con ul.week{
            width:420px;
            height:45px;
        }
        #con ul.week li{
            width:60px;
            height:45px;
            line-height:45px;
            text-align:center;
            float:left;
        }
        #con ul.week li.weekend{color:red}
        #con ul.day li{
            width:60px;
            height:45px;
            border-top:1px solid #ddd;
            float:left;
            line-height:50px;
            text-align:center;
            font-size:20px;
        }
    </style>
</head>
<body>
    <div id="box">
        <div id="top">
            <select name="query-year" id="year">
                <option value="">Select year</option>
            </select>年
            <select name="query-month" id="month">
                <option value="">Select month</option>
            </select>月
            <button style="width:60px;margin-left:20px;" id="inquriy" onclick="query()">query</button>
        </div>
        <div id="con">
            <ul class="week">
                <li class="weekend">日</li>
                <li>一</li>
                <li>二</i>
                <li>三</li>
                <li>四</li>
                <li>五</li>
                <li class="weekend">六</li>
            </ul>
            <ul class="day">
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </div>
    </div>
</body>
<script type="text/javascript">
    /* 
       1 自动生成年份和月份;
       2 默认当前年月;
    */
    var oYear = document.getElementById('year');
    var oMonth = document.getElementById('month');
    var oday = document.querySelector('.day');
    var oLi = document.querySelectorAll('.day li');
    var curDate = new Date();
    // 年份
    eachFor(1900,2051,function(val){
        var option = document.createElement("option");
        option.innerHTML = val;
        option.value = val;
        if(curDate.getFullYear() == val){
            option.selected = true;
        }
        oYear.appendChild(option);
    });
    // 月份
    eachFor(0,11,function(val){
        var option = document.createElement("option");
        option.innerHTML = parseInt(val) +1;
        option.value = val;
        if(curDate.getMonth() == val){
            option.selected = true;
        }
        oMonth.appendChild(option);
    });

    // 对函数的封装应该考虑掺入的参数,大小类型等
    function eachFor(start, end, callback){
        for(var i = start; i <= end ; i++){
            callback(i);
        }
    }
    function query(){
        var year = oYear.value ;
        var month = oMonth.value ; 
        // console.log(year +"--"+month);
        // oday.innerHTML = '';
        if(year && month){
            console.log(year +"--"+month);
            // 获取月份的第一天
            var firstDate = new Date(year,month,1);
            // 第一天对应是周几
            var dayOfWeek = firstDate.getDay();
            // 该月份有多少天
            var conutDay =  getMonthDays(year,month);
            console.log("countDay="+conutDay);
            oLi.forEach(function(el,index){
                el.innerHTML = '';
            })
            eachFor(1,conutDay,function(val){
                oLi[dayOfWeek + val - 1].innerHTML = val;
            });
        }else{
            alert('请先选择年份和月份');
        }
    }
    // 是否为闰年 整百年份必须被400整除 非整百年份被4整除就都是闰年
    function getMonthDays(year,month){
        var datas = [];
        if(year%400 ==0 || (year%4==0 && year%100!=0)){
            // console.log(year + '是闰年');
            datas = [31,29,31,30,31,30,31,31,30,31,30.31];
        
        }else{
            // console.log(year + '不是闰年');
            datas = [31,28,31,30,31,30,31,31,30,31,30.31];
        }
        console.log(year +"--"+ month +"--"+ datas[month]);
        return datas[month];
    }
    // 初始默认当前时间的年和月进行搜索
    query();
</script>
</html>

只是简单实现,还有很多需要完善的地方;

标签:document,option,val,实现,js,height,width,var,万年历
来源: https://www.cnblogs.com/xhliang/p/10797361.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有