纯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写出光棒效应的两种方法与jquery的两中方法
<script src="js/jQuery1.11.1.js" type="text/javascript"></script> &l ...
- 使用纯js写的一个分页
上图晒效果: 网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了.其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用lim ...
- 用js写出一个漂亮的单选框选中效果
一般的input框比较简单,我们可以用JavaScript配合css背景图片定位让我们模拟写出一个点击选中效果 首先需要有个图片素材,当页面加载的时候是背景图片定位到左图,当我们点击图片的时候,背景图 ...
- js写个日历
其实我是一个对时间和日期不怎么感兴趣的人,小学的时候感觉时间或者日期那块就让我很晕,因为有时候是100进制有时候是60进制,搞的我对日历一直很不感兴趣,最近不知道为什么想写一个日历了,可想而知,这个玩 ...
- js写出斐波那契数列
斐波那契数列:1.1.2.3.5.8.13.21.34.…… 函数: 使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1. for循环: 从底层向上运 ...
- 自己用js写的日历(在考勤中使用,显示员工的日期的考勤情况)
1.HTML部分 <div id="AttendanceDataDetailDiv"> <div class="A_close"> &l ...
- javascript js写特效日历
<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 纯js写图片轮播插件
最近终于写成了自己创作的图片轮播插件,使用原生js编写.与目前网上流行的轮播插件相比,功能和效果稍弱,但是使用起来相当方便. 先看html代码 <!DOCTYPE html> <ht ...
- 纯JS写最简单的图片轮播
非常简单的一个大图轮播,通过将控制显示位置来进行轮播效果,写来给正在学习的新手朋友们参考交流. 先看效果:(实际效果没有这么快) 先看布局: <div id="display" ...
随机推荐
- Windows不能在本地计算机启动OracleDBConsoleorcl .错误代码2
Windows 不能在 本地计算机 启动 OracleDBConsoleorcl.有关更多信息,查阅系统事件日志.如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码 2. ...
- [Yii][RBAC]Yii中应用RBAC完全指南
开端筹办 Yii供给了强大的设备机制和很多现成的类库.在Yii中应用RBAC是很简单的,完全不须要再写RBAC代码.所以筹办工作就是,打开编辑器,跟我来. 设置参数.建树数据库 在设备数组中,增长以下 ...
- Android开发之50个常见实用技巧——添加悦目的动画效果
Hack.5 使用TextSwitcher和ImageSwitcher实现平滑过渡 实现步骤: 1.通过findViewById()方法获取TextSwitcher对象的引用Swithcer,当然也可 ...
- Js- 菜单
很简单的JS二级菜单显示,收藏 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...
- Hive sql 语法解读
一. 创建表 在官方的wiki里,example是这种: Sql代码 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name d ...
- nodejs保存文件的问题
从前端到那里jar包失败: 保存到本地管理机jar包md5sum上传正确的值md5sum值不相等.并上传 处理 没有错误,说明保存过程中的错误: 前面是base64然后转码后jar包内容放进reque ...
- WPF仿微软事件和属性窗体,效果更炫!
先看效果图:包含系统颜色.系统字体.支持自定义编辑窗体.集合绑定.提供多类型支持. 这是国外网站上无意中看到的,修改了下 感觉还不错!接下来大概介绍下 经过修修改改只留下了有用的主要部分: 前两项 ...
- TableView的优化
一:什么是TableView的优化以及为什么要优化 1)CPU(中央处理器)和GPU(图形处理器):CPU主要从事逻辑计算的一些工作:GPU主要从事图形处理方面的工作. 2)CPU和GPU的共同点: ...
- Android(java)学习笔记177:BroadcastReceiver之 应用程序安装和卸载 的广播接收者
国内的主流网络公司(比如网易.腾讯.百度等等),他们往往采用数据挖掘技术获取用户使用信息,从而采用靶向营销.比如电脑上,我们浏览网页的时候,往往会发现网页上会出现我们之前经常浏览内容的商 ...
- 更多隐式Intent用法
上几篇无论是显示的Intent或者隐式的Intent,都是要跳转的自己添加指定的页面,如果想要跳转到百度首页或者跳转到联系人面板等,前面的知识显然是很不实用的.这里,将要针对其它的一些Intent用法 ...