全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

纯JS实现简单的日历

本文实例为大家分享了纯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  # 日历  # JS实现简单日历特效  # javascript实现日历效果  # js+html制作简单日历的方法  # js前端日历控件(悬浮、拖拽、自由变形)  # js实现日历的简单算法  # js css+html实现简单的日历  # 轻量级的原生js日历插件calendar.js使用指南  # JS学习之一个简易的日历控件  # JS日历 推荐  # 原生js实现日历效果  # 几号  # 有多少  # 这个月  # 某天  # 弹出  # 大家分享  # 上个月  # 具体内容  # 大家多多  # 下个月  # 有多少个  # getDay  # ti  # length  # font  # color  # center  # ds  # td  # css 


相关文章: 小程序网站制作需要准备什么资料,如何制作小程序?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何选择适合PHP云建站的开源框架?  如何在腾讯云服务器上快速搭建个人网站?  网页设计与网站制作内容,怎样注册网站?  如何用wdcp快速搭建高效网站?  C#如何在一个XML文件中查找并替换文本内容  装修招标网站设计制作流程,装修招标流程?  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何在景安服务器上快速搭建个人网站?  如何在万网ECS上快速搭建专属网站?  红河网站制作公司,红河事业单位身份证如何上传?  如何通过虚拟机搭建网站?详细步骤解析  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  c++ stringstream用法详解_c++字符串与数字转换利器  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  如何用免费手机建站系统零基础打造专业网站?  如何在阿里云完成域名注册与建站?  如何访问已购建站主机并解决登录问题?  如何用西部建站助手快速创建专业网站?  如何通过多用户协作模板快速搭建高效企业网站?  已有域名和空间,如何快速搭建网站?  C#如何序列化对象为XML XmlSerializer用法  如何在阿里云虚拟主机上快速搭建个人网站?  如何彻底卸载建站之星软件?  5种Android数据存储方式汇总  免费视频制作网站,更新又快又好的免费电影网站?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何挑选高效建站主机与优质域名?  网站图片在线制作软件,怎么在图片上做链接?  如何选择最佳自助建站系统?快速指南解析优劣  如何在腾讯云服务器快速搭建个人网站?  怎么将XML数据可视化 D3.js加载XML  SQL查询语句优化的实用方法总结  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  香港网站服务器数量如何影响SEO优化效果?  建站之星上传入口如何快速找到?  建站之星如何修改网站生成路径?  小建面朝正北,A点实际方位是否存在偏差?  模具网站制作流程,如何找模具客户?  威客平台建站流程解析:高效搭建教程与设计优化方案  无锡营销型网站制作公司,无锡网选车牌流程?  如何快速启动建站代理加盟业务?  宿州网站制作公司兴策,安徽省低保查询网站?  英语简历制作免费网站推荐,如何将简历翻译成英文?  开封网站制作公司,网络用语开封是什么意思? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。