在页面中添加两个 <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>
相关文章
|
JavaScript 前端开发
JavaScript Date(日期) 对象
JavaScript Date(日期) 对象
176 2
|
JavaScript 前端开发
js时间戳转日期时间
js时间戳转日期时间
400 76
|
9月前
|
JavaScript Shell C#
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
569 3
|
JavaScript 前端开发 搜索推荐
Moment.js、Day.js、Miment,日期时间库怎么选?
【10月更文挑战第29天】如果你需要一个功能强大、插件丰富的日期时间库,并且对性能要求不是特别苛刻,Moment.js是一个不错的选择;如果你追求极致的轻量级和高性能,那么Day.js可能更适合你;而如果你有一些特定的日期时间处理需求,并且希望在性能和功能之间取得平衡,Miment也是可以考虑的。
477 57
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
200 5
在浏览器执行js脚本的两种方式
|
JavaScript 前端开发
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
685 0
|
JavaScript 前端开发
用JavaScript脚本将当地时间转换成其它时区
用JavaScript脚本将当地时间转换成其它时区
|
JavaScript
vue + d3.js(v6) 绘制【树状图/思维导图】可折叠/展开,可点击跳转,可带标签
vue + d3.js(v6) 绘制【树状图/思维导图】可折叠/展开,可点击跳转,可带标签
1341 1