利用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 相关文章推荐
javascript hasFocus使用实例
Jun 29 Javascript
对xmlHttp对象方法和属性的理解
Jan 17 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
Sep 04 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
Oct 17 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
Jul 17 Javascript
微信小程序实现循环动画效果
Jul 16 Javascript
原生JS实现的简单轮播图功能【适合新手】
Aug 17 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
layui复选框的全选与取消实现方法
Sep 02 Javascript
vue页面引入three.js实现3d动画场景操作
Aug 10 Javascript
原生JS实现弹幕效果的简单操作指南
Nov 10 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
15种PHP Encoder的比较
2007/03/06 PHP
php变量作用域的深入解析
2013/06/03 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
javascript版2048小游戏
2015/03/18 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
20行python代码实现人脸识别
2019/05/05 Python
Python的互斥锁与信号量详解
2019/09/12 Python
python如何代码集体右移
2020/07/20 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
为什么要有struct关键字
2012/05/08 面试题
frg-100简单操作(设置)说明
2022/04/05 无线电
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers