利用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 相关文章推荐
IE8 内存泄露(内存一直增长 )的原因及解决办法
Apr 06 Javascript
JavaScript职责链模式概述
Sep 17 Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
详解微信小程序设置底部导航栏目方法
Jun 29 Javascript
AngularJS中ng-class用法实例分析
Jul 06 Javascript
如何使node也支持从url加载一个module详解
Jun 05 Javascript
在vue项目中正确使用iconfont的方法
Sep 28 Javascript
js中怎么判断两个字符串相等的实例
Jan 17 Javascript
微信小程序实现搜索指定景点周边美食、酒店
May 18 Javascript
CKeditor4 字体颜色功能配置方法教程
Jun 26 Javascript
微信小程序tab左右滑动切换功能的实现代码
Feb 08 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
php下目前为目最全的CURL中文说明
2010/08/01 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
php实现小程序支付完整版
2018/10/09 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
javascript实用方法总结
2015/02/06 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
Python采集腾讯新闻实例
2014/07/10 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
python图片验证码生成代码
2016/07/02 Python
python实现飞机大战微信小游戏
2020/03/21 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
python实现登录与注册系统
2020/11/30 Python
python爬取抖音视频的实例分析
2021/01/19 Python
Python 图片处理库exifread详解
2021/02/25 Python
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
大学生村官事迹材料
2014/01/21 职场文书
社会实践感言
2014/01/25 职场文书
质量月活动策划方案
2014/03/10 职场文书
初三学习决心书
2014/03/11 职场文书
售后服务质量承诺书
2015/04/29 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
Python天气语音播报小助手
2021/09/25 Python
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python