利用JS制作万年历的方法


Posted in Javascript onAugust 16, 2017

我们知道,万年历在人们的生活中是在平常不过的一种东西了,那么怎样用JS来实现在网页中展示一个与众不同万年历呢

1.HTML布局:

<div id="calendar">
  <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="datesUl"></ul>
</div>

1.首先在布局上,可以先用一个id为calender(日历)的div将你的万年历包住,以便我们对万年历的位置进行设置;

2.在这个大的div中有三部分: 1. month_year 用以设置年月; 2.title 用以显示星期; 3.detesUl 用以显示具体的日期;

CSS样式:

*{
      padding: 0;
      margin: 0;
      list-style: none;
    }
    #calendar{
      width: 700px;
      background-color: lightgray;
      margin: 20px auto;

    }
    #calendar::after{
      content: "";
      display: block;
      clear: both;
    }
    #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;
    }
    #datesUl > li:empty{
      opacity: 0;
    }
    #datesUl > li:hover{
      background-color: lightblue;
    }

JS代码分析:

  1. 做一些初始化的处理,给俩个显示年月的选项卡中添加内容便于用户查找
  2. 构造一些我们要用到的函数: 如输入年月计算出这个月有几天,创建添加option及li的函数
<script>
  var yearSelect = document.getElementById('year');
  var monthSelect = document.getElementById('month');
  var datesUl = document.getElementById('datesUl');
  //初始化
  function init(){
    for(var year=1990;year<3000;year++){    //初始化俩个选项卡
      createOption(year,year,yearSelect);
    }
    for(var month=1;month<13;month++){
      createOption(month,month,monthSelect);
    }
    var now = new Date();            //获取当前的日期
    showSelect(now.getFullYear(),now.getMonth()+1);  //引用显示选项卡的函数

    showDates();                  //调用显示日期的函数

    yearSelect.onchange=function(){         //当选项卡改变时
      showDates();
    };
    monthSelect.onchange=function(){
      showDates();
    }
  }
  init();            //调用初始化函数   
  //创建option的函数
  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 getDays(year,month){
    var d = new Date(year,month,1);
    return d.getDay();
  }
  //根当前的select中的年和月来显示日期
  function showDates(){
    datesUl.innerHTML= "";
    var year = yearSelect.value;
    var month = monthSelect.value;
    //创建空的li
    for(var i=0;i<getDays(year,month);i++){
      createLi("",datesUl);
    }
    //创建有日期的li
    for(var j=1;j<=getDatesOfMonth(year,month);j++){
      createLi(j,datesUl);
    }
  }
  //创建li并添加至对应的容器
  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,0);
    return d.getDate();
  }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Extjs学习笔记之二 初识Extjs之Form
Jan 07 Javascript
JQuery Easyui Tree的oncheck事件实现代码
May 28 Javascript
JS下拉缓冲菜单示例代码
Aug 30 Javascript
node中socket.io的事件使用详解
Dec 15 Javascript
JavaScript仿静态分页实现方法
Aug 04 Javascript
去除字符串左右两边的空格(实现代码)
May 12 Javascript
JS JSOP跨域请求实例详解
Jul 04 Javascript
Bootstrap零基础入门教程(三)
Jul 18 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
Sep 28 Javascript
jQuery实现的点击按钮改变样式功能示例
Jul 21 jQuery
JS构造一个html文本内容成文件流形式发送到后台
Jul 31 Javascript
详解如何更好的使用module vuex
Mar 27 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
Aug 16 #Javascript
React Native 集成jpush-react-native的示例代码
Aug 16 #Javascript
jQuery实现全选、反选和不选功能
Aug 16 #jQuery
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
Aug 16 #Javascript
微信小程序删除处理详解
Aug 16 #Javascript
微信小程序实现倒计时60s获取验证码
Apr 17 #Javascript
微信小程序实现根据字母选择城市功能
Aug 16 #Javascript
You might like
2.PHP入门
2006/10/09 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
js回调函数原理与用法案例分析
2020/03/04 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
Python XML RPC服务器端和客户端实例
2014/11/22 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
安全教育心得体会
2013/12/29 职场文书
电厂厂长岗位职责
2014/01/02 职场文书
偷看我的初中毕业鉴定
2014/01/29 职场文书
安卓程序员求职信
2014/02/28 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
领导工作表现评语
2015/01/04 职场文书
导游词格式
2015/02/13 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
浅谈Python魔法方法
2021/06/28 Java/Android