纯JS实现简单的日历


Posted in Javascript onJune 26, 2017

本文实例为大家分享了纯JS实现日历的具体代码,供大家参考,具体内容如下

封装代码:

(function(cmf){
 cmf.showDcalendar=function(){
  var fnname=cmf.fn
  var id="cmfrili2"
  var yy=f23timeselecta1.value,mm=f23timeselecta2.value-1
  var newdara=new Date()
  var dd=newdara.getDate();
  var d=new Date(yy,mm,1),t
  if(mm==0){mm=12;yy--}
  var a,b,c,d2
  t='<table width=100% onselectstart="return false"><tr align=center>'
  var ds='<font color=#ff0000>日</font>,一,二,三,四,五,<font color="#009900">六</font>'.split(",")
  for(x=0;x<7;x++)t+='<td><b>'+ds[x]+'</b></td>'
  t+='</tr><tr>'
  //计算显示上个月有几号在日历上
  a=d.getDay()
  if(a==0)a=7
  r=[]
  var c2=0
  for(var x=0;x<a;x++)
  {
   d2=new Date(d-24*3600*1000*(a-x))
   r[r.length]="1"+d2.getDate()
   c2++
  }
  
 //计算显示这个月有几号在日历上
  mm++
  if(mm==13){mm=1;yy++}
  c=cmf.getMonthM(yy,mm)//计算哪年哪月 有多少天
  
  d=new Date(yy,mm,1)
  for(var x=1;x<=c;x++)r[r.length]="2"+x
 
  //计算显示下个月有几号在日历上
  c2+=c//r数组有多少个
  
  d2=new Date(yy,mm-1,c)
  
  a=d2.getDay()//这个月最后一天星期几
  
  a=7-a
  if(c2<36)a+=7
 
  for(var x=1;x<a;x++)
  {
   r[r.length]="3"+x
  }
  var yy1=yy.toString()
  var mm1=mm.toString()
  for(var x=0;x<r.length;x++)
  {
   
   if(x%7==0)t+='<tr align=center>'
   t+='<td height=25 onclick="'+fnname+'('+yy1+mm1+r[x].toString().substring(1)+',this)" onmouseover=this.bgColor="#33eeff" onmouseout=this.bgColor=""'
   if(r[x]=="2"+dd)t+=' style="border:1px solid #aa0000"'
   t+='>'
   var cl=""
   if(r[x].charAt(0)!=2)cl='999999'
   else if(x%7==0)cl='ff0000'
   else if(x%7==6)cl='009900'
   if(cl!="")t+='<font color="#'+cl+'">'
   t+=r[x].substring(1)
   if(cl!="")t+='</font>'
   t+='</td>'
   if(x%7==6)t+='</tr>'
   
  }
  t+='</table>'
  
  document.getElementById(id).innerHTML=t
 }
 
 cmf.getMonthM=function(y,m){//计算哪年哪月 有多少天 月份从1开始
  if(m==4 || m==6 || m==9 || m==11)return 30
  if(m==2)return (y%4==0 && y%100!=0)|| y%400==0?29:28
  return 31
 }
 cmf.showd=function(id,fn){
  cmf.fn=fn
  var g='<div id="cmfrili1"></div><div id="cmfrili2"></div>'
  var newdara=new Date()
  var yy=newdara.getFullYear();
  var mm=newdara.getMonth()+1;
  document.getElementById(id).innerHTML=g
  var s='border-width:1px;border-style:solid;border-color:#000000 #cccccc #cccccc #000000;width: 44px;'
  var t=''
  +'<table bgcolor="#ffffff" width=100% cellpadding=0 cellspacing=0><tr align=center><td height=44>'
  +cmf.timeselect_ms(1,'<input type=text value="'+yy+'" id="f23timeselecta1" onchange="cmf.showDcalendar()" style="width:44;text-align:center;'+s+'">年')
  +'</td><td>'
  +cmf.timeselect_ms(2,'<input type=text value="'+mm+'" id="f23timeselecta2" onchange="cmf.showDcalendar()" style="width:22;text-align:center;'+s+'">月')
  +'</td>'
  document.getElementById("cmfrili1").innerHTML=t
  cmf.showDcalendar()
  
 }
 cmf.timeselect_ms=function(n,m,n2)
 {
  var t='<table cellpadding=0 cellspacing=0 height=20><tr align=center>'
  t+='<td onmouseup="cmf.timeselect_up('+n+',2)" onselectstart="return false" style="font-size:16px;cursor:pointer;"><b>◄</b></td>'
  if(m!=null)t+='<td>'+m+'</td>'
  t+='<td onmouseup="cmf.timeselect_up('+n+',1)" onselectstart="return false" style="font-size:16px;cursor:pointer;"><b>►</b></td>'
  if(n2!=null)t+='<td>'+n2+'</td>'
  t+='</tr></table>'
  return t
 }
 
 cmf.timeselect_up=function(n,m){
  var o=document.getElementById("f23timeselecta"+n),c=o.value
  if(c=="")c=1
  if(n==1)//年
  {
   if(m==2){//减
    c--
   }else if(m==1){//加
    c++
   }
  }
  else
  {
   if(m==2){//减
    if(c<2) return
    c--
   }else if(m==1){//加
    if(c==12) return
    c++
   }
  }
  o.value=c
  if(m==1 || m==2)cmf.showDcalendar()
 }
})(window.cmf={})

使用:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title>日历</title>
  <script src="Dcalendar.js" type="text/javascript" charset="utf-8"></script>
  <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  
 </head>
 <body>
  <div id="ri" style="width: 400px;">
   
  </div>
 </body>
 <script type="text/javascript">
  cmf.showd('ri','dianji')
  function dianji(d,ti){
   $("#ri td").css('border','')
   $(ti).css('border','1px solid #aa0000')
   alert(d)
  }
 </script>
</html>

使用代码中dianji()函数是用户点击某天弹出某天的日期;效果如下

纯JS实现简单的日历

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

Javascript 相关文章推荐
JavaScript 用Node.js写Shell脚本[译]
Sep 20 Javascript
JS实现随机数生成算法示例代码
Aug 08 Javascript
jQuery动态添加删除select项(实现代码)
Sep 03 Javascript
Jquery Ajax方法传值到action的方法
May 11 Javascript
JavaScript对象反射用法实例
Apr 17 Javascript
开启BootStrap学习之旅
May 04 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
Angularjs之filter过滤器(推荐)
Nov 27 Javascript
基于jQuery实现照片墙自动播放特效
Jan 12 Javascript
JavaScript实现图片无缝滚动效果
Jul 07 Javascript
微信小程序生成二维码的示例代码
Mar 29 Javascript
flexible.js实现移动端rem适配方案
Apr 07 Javascript
vue2.0全局组件之pdf详解
Jun 26 #Javascript
JavaScript创建对象的七种方式(推荐)
Jun 26 #Javascript
基于 webpack2 实现的多入口项目脚手架详解
Jun 26 #Javascript
JavaScript的六种继承方式(推荐)
Jun 26 #Javascript
JavaScript数据类型和变量_动力节点Java学院整理
Jun 26 #Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 #Javascript
JavaScript条件判断_动力节点Java学院整理
Jun 26 #Javascript
You might like
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
php各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
Python之eval()函数危险性浅析
2014/07/03 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
餐厅经理岗位职责范本
2014/02/17 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
保护环境演讲稿
2014/05/10 职场文书
婚礼家长致辞
2015/07/27 职场文书
2016春节放假通知范文
2015/08/18 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android
Java使用HttpClient实现文件下载
2022/08/14 Java/Android