利用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 相关文章推荐
JXTree对象,读取外部xml文件数据,生成树的函数
Apr 02 Javascript
jquery 删除cookie失效的解决方法
Nov 12 Javascript
jQuery使用$.ajax提交表单完整实例
Dec 11 Javascript
有关jquery与DOM节点操作方法和属性记录
Apr 15 Javascript
javascript中的面向对象
Mar 30 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
Aug 16 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 Javascript
js最简单的双向绑定实例讲解
Jan 02 Javascript
Vue实现todolist删除功能
Jun 26 Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 Javascript
Vue表单控件绑定图文详解
Feb 11 Javascript
js代码实现轮播图
May 04 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
php微信公众号开发模式详解
2016/11/28 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
很可爱的输入框
2008/08/03 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
Python logging模块学习笔记
2014/05/24 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
django中send_mail功能实现详解
2018/02/06 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
django配置app中的静态文件步骤
2020/03/27 Python
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
团队精神的演讲稿
2014/05/14 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
预备党员公开承诺书
2014/05/28 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2014年技术员工作总结
2014/11/18 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
七年级作文之环保作文
2019/10/17 职场文书
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL