在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期 在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份

简介: 在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期 在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份

需求说明:


使用 JavaScript 中的 Date 对象,在页面上显示一个万年历。选择不同的年份和月份,在页面中显示当前月的日历

55.png

实现思路:


在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期

在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份和月份,显示到 <select> 标签上

根据 <select> 标签上显示的 value 值,获取当前选中年月的第一天是星期几,并绘制空 <li> 标签

获取当前选中的年月一共有多少天,并绘制对应的 <li> 标签

为两个 <select> 标签设置 onchange 事件


实现代码:


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <style type="text/css">
      *{
        margin: 0;
        padding: 0;
        list-style: none;
      }
      #calender{
        width: 700px;
        background-color: lightgray;
        margin: 20px auto;
      }
      #month_year{
        width: 700px;
        height: 50px;
        line-height: 50px;
        text-align: center;
      }
      ul li{
        float: left;
        width: 100px;
        height: 50px;
        text-align: center;
        line-height: 50px;
      }
    </style>
  </head>
  <body>
    <div id="calender">
      <div id="month_year">
        <select id="year"></select>年
        <select id="month"></select>月
      </div>
      <ul id="title">
        <li>星期天</li>
        <li>星期一</li>
        <li>星期二</li>
        <li>星期三</li>
        <li>星期四</li>
        <li>星期五</li>
        <li>星期六</li>
      </ul>
      <ul id="dateul"></ul>
    </div>
    <script type="text/javascript">
      var yearSelect=document.getElementById("year");
      var monthSelect=document.getElementById("month");
      var dateul=document.getElementById("dateul");
      function init(){
        for (var year=1990;year<3000;year++) {
          createOption(year,year,yearSelect);
        }
        for (var month=1;month<13;month++) {
          createOption(month,month-1,monthSelect);
        }
        var now=new Date();
        console.log(Date)
        showSelect(now.getFullYear(),now.getMonth());
        showDates();
        yearSelect.onchange=function(){
          showDates();
        }
        monthSelect.onchange=function(){
          showDates();
        }
      }
      function createOption(text,value,parent){
        var option=document.createElement("option");
        option.innerHTML=text;
        option.value=value;
        parent.appendChild(option);
      }
      function showSelect(year,month){
        yearSelect.value=year;
        monthSelect.value=month;
      }
      function showDates(){
        dateul.innerHTML="";
        var year=yearSelect.value;
        var month=monthSelect.value;
        for (var i=0;i<getDays(year,month);i++) {
          createLi("",dateul);
        }
        for (var j=1;j<=getDatesOfMonth(year,month);j++) {
          createLi(j,dateul);
        }
      }
      function getDays(year,month){
        var d=new Date(year,month,1);
        return d.getDay();
      }
      function createLi(text,parent){
        var li=document.createElement("li");
        li.innerHTML=text;
        parent.appendChild(li);
      }
      function getDatesOfMonth(year,month){
        var d=new Date(year,month+1,0);
        return d.getDate();
      }
      init();
    </script>
  </body>
</html>
相关文章
|
3月前
|
JavaScript 前端开发
JavaScript Date(日期) 对象
JavaScript Date(日期) 对象
53 2
|
2月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
2月前
|
JavaScript 前端开发 搜索推荐
Moment.js、Day.js、Miment,日期时间库怎么选?
【10月更文挑战第29天】如果你需要一个功能强大、插件丰富的日期时间库,并且对性能要求不是特别苛刻,Moment.js是一个不错的选择;如果你追求极致的轻量级和高性能,那么Day.js可能更适合你;而如果你有一些特定的日期时间处理需求,并且希望在性能和功能之间取得平衡,Miment也是可以考虑的。
|
3月前
|
Web App开发 前端开发 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(一)
JavaScript动态渲染页面爬取——Selenium的使用(一)
77 4
|
3月前
|
Web App开发 数据采集 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(二)
JavaScript动态渲染页面爬取——Selenium的使用(二)
98 2
|
3月前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
175 0
|
3月前
|
JavaScript 前端开发 API
JavaScript全屏,监听页面是否全屏
JavaScript全屏,监听页面是否全屏
69 0
|
3月前
|
前端开发 JavaScript
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
43 0
|
3月前
|
存储 JSON JavaScript
JavaScript动态渲染页面爬取——Pyppeteer爬取实战
JavaScript动态渲染页面爬取——Pyppeteer爬取实战
45 0
|
4月前
|
JavaScript 前端开发
[收藏]用JavaScript让弹出页面以最小化的形式出现在状态栏中
[收藏]用JavaScript让弹出页面以最小化的形式出现在状态栏中