首页 > web前端 > js教程 > 正文

日期函数和对于函数封装的灵活运用

零下一度
发布: 2017-06-26 11:48:17
原创
1718人浏览过

<!doctype html>
<html lang="en">
<head>
   <meta charset="utf-8">
   <title>title</title>
   <style>
       td {
           text-align: center;
       }
   </style>
</head>

<body>

<p>
   <select id="yearSelect"></select>
   <select id="monthSelect"></select>

<strong></strong>
</p>

<table id="tab" width="100%" border="1">
   <thead>
       <tr>
           <th>日</th>
           <th>一</th>
           <th>二</th>
           <th>三</th>
           <th>四</th>
           <th>五</th>
           <th>六</th>
       </tr>
   </thead>
   <tbody></tbody>
</table>

<script>
   /*
   * 获取指定年月份的日期总天数
   * 显示的月份的第一天是星期几?
   * */

var yearSelectElement = document.querySelector('#yearSelect');
   var monthSelectElement = document.querySelector('#monthSelect');
   var tbody = document.querySelector('tbody');
   var strongElement = document.querySelector('strong');

var nowDate = new Date();

/*
   * 动态生成option
   * */
   var html = '';
   for (var i=1970; i<2100; i++) {
       if (i == nowDate.getFullYear()) {
           html = '<option selected>'+ i +'</option>' + html;
       } else {
           html = '<option>'+ i +'</option>' + html;
       }

}
   yearSelectElement.innerHTML = html;

var html = '';
   for (var i=0; i<12; i++) {
       if (i == nowDate.getMonth()) {
           html += '<option value="'+i+'" selected>'+ (i+1) +'</option>';
       } else {
           html += '<option value="'+i+'">'+ (i+1) +'</option>';
       }

}
   monthSelectElement.innerHTML = html;

/*
   * 默认显示当前年和月的日历
   * */
   calendar(nowDate.getFullYear(), nowDate.getMonth());

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人

/*
   * 根据选择的年和月重新生成日历
   * */
   yearSelectElement.onchange = monthSelectElement.onchange = function() {
       calendar(yearSelectElement.value, monthSelectElement.value);
   };

function calendar(year, month) {
       year = Number(year);
       month = Number(month);
       strongElement.innerHTML = year + '年' + (month+1) + '月';

var html = '<tr>';
       for (var i=1; i<=42; i++) {

if (i%7 == 1 && i != 1) {
               html += '</tr><tr>';
           }

var v = i- getFirstDay(year, month);

if (v < 1 || v > getDays(year, month)) {
               html += '<td> </td>';
           } else {
               if (i % 7 == 1 || i % 7 == 0) {
                   html += '<td style="color: red">'+ v +'</td>';
               } else if (
                   year == nowDate.getFullYear()
                   &&
                   month == nowDate.getMonth()
                   &&
                   v == nowDate.getDate()
               ) {
                   html += '<td style="background: red; color:white;">'+ v +'</td>';
               } else {
                   html += '<td>'+ v +'</td>';
               }
           }


       }
       html += '</tr>';
       tbody.innerHTML = html;
   }

/*
   * 获取指定显示年月份的日期总天数
   * */
   function getDays(y, m) {
       return new Date(y, m+1, 1, -1, 0, 0).getDate();

/*
       * 得到下一月的1日,-1时0分0秒的日期
       * -1 : 其实就是前一天,表示就是上个月的最后一天的23时
       * */
       var date = new Date(y, m+1, 1, -1, 0, 0);
       /*
       * 上个月最后一天的日期其实就是上个月总的天数
       * */
       return date.getDate();
   }

/*
   * 获取指定显示的年月份的第一天是星期几
   * */
   function getFirstDay(y, m) {
       return new Date(y, m, 1).getDay();
   }
</script>
</body>
</html>

以上就是日期函数和对于函数封装的灵活运用的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号