无聊,写了个日历程序,欢迎拍砖

New Document

body{font:12px Arial;}
a:link,a:visited,a:active{color:#000;text-decoration:none;background:none;}
a:hover{color:#fff;text-decoration:none;background:#000;}

一个通用的日历程序,IE6、Mozilal系列测试通过.欢迎使用

/*****************
*
*日历程序
*作者:marcian
*主页:www.marcian.net
*2007.2.10
*特点:封装,对外暴露一个方法来调用日历,最大最小年份可调,日期可用性选择.采用DOM方式创建日历对象,页面只需调用一个js文件即可。
*使用方法:创建日历对象,然后调用此对象的showCalendar()方法即可.
*兼容性:IE6,Mozilla系列测试通过
*欢迎交流.
*自由使用,但请保留作者信息。
*公历算法来源于网络
*******************/

/*****************
*为Date对象添加定制的方法
******************/
//获取当前时间
Date.prototype.getTheDate=function(){
return {Y:this.getFullYear(),M:this.getMonth()+1,D:this.getDate()};
}

Date.prototype.beforeTheDate=function(Y,M,D){
if(Ythis.getFullYear()||(Y==this.getFullYear()&&M>this.getMonth()+1)||(Y==this.getFullYear()&&M==this.getMonth()+1&&D>this.getDate()))
{
return true;
}
else
{
return false;
}
}

Date.prototype.getThePreDate=function(dateObj,minYear){
var M=dateObj.M;
var Y=dateObj.Y;
var D=dateObj.D;
M--;
if(M12)
{
M=1;
Y++;
}
if(Y>maxYear)
{
Y=maxYear;
}
return "{Y:"+Y+",M:"+M+",D:"+D+"}";
}

/*****************
*日历的构造函数
******************/
function MarcianCalendar(calendarObjName,display,minYear,maxYear,afterNotUsed,beforeNotUsed)
{
/*********************************************
*参数说明
*calendarObjName:创建的日历对象实例名,必须
*display:显示日历 true为显示,false为不显示.可选,默认为不显示
*minYear:最小年份,可选,默认为1900
*maxYear:最打年份,可选,默认为2900
*afterNotUsed:大于当前时间的日期不可用,可选,默认为false;
*beforeNotUsed:小于当前日期的时间不可用,可选,默认为false;
**********************************************/

/*属性*/
this.calendarName=calendarObjName;//创建的日历对象实例名
this.display=display?"block":"none";//
this.minYear=minYear?minYear:1900;//
this.maxYear=maxYear?maxYear:2900;//
this.afterNotUsed=afterNotUsed?afterNotUsed:false;
this.beforeNotUsed=beforeNotUsed?beforeNotUsed:false;
this.calendarContainer=null;//日历容器
this.calendarMenuContainer=null;//日历菜单容器
this.calendarDateContainer=null;//日历日期容器
this.calendarWeekContainer=null;//日历星期容器
this.calendarCloseContainer=null;//关闭菜单容器
this.weekAry=["日","一","二","三","四","五","六"];//星期数组
this.date=new Date();//日期对象
this.moveObjAry=new Array();//移动对象数组
this.fillObjAry=new Array();//填充对象数组
this.id=0;//当前ID号

//获取指定页面元素的坐标
this.getObjOffset=function(obj){
var x=obj.offsetWidth;
var y=0;
while(obj.offsetParent)
{
x+=obj.offsetLeft;
y+=obj.offsetTop;
obj=obj.offsetParent;
}
return{x:x,y:y};
}

//移动日历
this.moveCalendar=function(id){
var offset=this.getObjOffset(this.$(this.moveObjAry[id]));
this.calendarContainer.style.cssText=this.calendarContainer.getAttribute("css")+";top:"+offset.y+"px;left:"+offset.x+"px;display:block";
this.id=id;
}

//填充日期
this.fillDate=function(dateStr){
var fillObj=this.$(this.fillObjAry[this.id]);
if(fillObj.type=="text")
{
fillObj.value=dateStr;
}
if(this.id=0;j--)
{
this.calendarDateContainer.removeChild(this.calendarDateContainer.childNodes[j]);
}
}
var W=1;
var Y=dateObj.Y;
var M=dateObj.M;
var D=dateObj.D;
var dayAry=[31,28,31,30,31,30,31,31,30,31,30,31];
var r=[0,3,3,6,1,4,6,2,5,0,3,5];
var c=6;
if(Y%400==0||(Y%4==0&&Y%100!=0))
{
dayAry[1]=29;
}
if((Y%400==0||(Y%4==0&&Y%100!=0))&&M=w&&d"+d+"";
}
d++;
}
start>w?start=w:start++;
div.appendChild(p);
}
this.calendarDateContainer.appendChild(div);
}
}

/*设置日历控制菜单*/
this.setMenu=function(dateObj){
this.calendarMenuContainer.innerHTML="上月 "+dateObj.Y+"-"+(dateObj.M>9?dateObj.M:"0"+dateObj.M)+" 下月";
this.setDate(dateObj);
}

/*初始化*/
this.initial=function(){
this.calendarContainer=document.createElement("div");
this.calendarContainer.style.cssText="position:absolute;top:0px;left:0px;width:140px;border:1px solid #666;padding:1px;background:#fff;font:12px Arial;margin-bottom:1px;display:"+this.display+";";
this.calendarContainer.setAttribute("css",this.calendarContainer.style.cssText);
this.calendarMenuContainer=document.createElement("div");
this.calendarMenuContainer.style.cssText="width:140px;height:20px;background:#aaa;color:#fff;text-align:center;padding-top:3px;";
this.calendarWeekContainer=document.createElement("div");
this.calendarWeekContainer.style.cssText="width:140px;height:20px;margin-bottom:1px;";
for(i=0;i关闭日历";
this.calendarContainer.appendChild(this.calendarMenuContainer);
this.calendarContainer.appendChild(this.calendarWeekContainer);
this.calendarContainer.appendChild(this.calendarDateContainer);
this.calendarContainer.appendChild(this.calendarCloseContainer);
document.body.appendChild(this.calendarContainer);
this.setMenu(this.date.getTheDate());
}

//检查输入的年参数是否符合要求.
this.checkYear=function(){
if(!this.minYear.toString().match(/\d\d\d\d/))
{
alert("最低年份输入不正确,重新输入");
}
else if(!this.maxYear.toString().match(/\d\d\d\d/))
{
alert("最高年份输入不正确,重新输入");
}
else if(eval("0+"+this.maxYear)

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • 无聊,写了个日历程序,欢迎拍砖

    New Document body{font:12px Arial;} a:link,a:visited,a:active{color:#000;text-decoration:none;background:none;} a:hover{color:#fff;text-decoration:none;background:#000;} 一个通用的日历程序,IE6.Mozilal系列测试通过.欢迎使用 /***************** * *日历程序 *作者:marcian *主页:www.

  • php实现的日历程序

    本文实例讲述了php实现的日历程序.分享给大家供大家参考.具体如下: <?php ////判断$Year和$Month是否为空,如果为空就获取系统当前日期,否则用$_GET获取 $Year = empty($_GET['Year']) ? date("Y"): $_GET["Year"]; $Month = empty($_GET['Month']) ? date("m"): $_GET["Month"]; ////获取

  • 手把手教你写一个微信小程序(推荐)

    需求 小程序语音识别,全景图片观看,登录授权,获取个人基本信息 一:基础框架 官方开发文档:https://developers.weixin.qq.com/miniprogram/dev/ (其实官方文档写的很清楚了) 1.跟着官方文档一步一步来,新建一个小程序项目就好 2.然后呢,毕竟默认的只是基本骨架,肌肉线条还是要自己填的 app.json 是当前小程序的全局配置 小程序的所有页面路径.界面表现.网络超时时间.底部 tab 需求一:底部tab,我们要像原生APP那样要有是三个常驻的按钮,

  • 用python写一个定时提醒程序的实现代码

    身体是革命的本钱,身体健康了我们才有更多精力做自己想做的事情,追求女神,追求梦想.然而程序员是一个苦比的职业,大部分时间都对着电脑,我现在颈椎就不好了,有时候眼睛还疼,我还没20阿,伤心...于是乎写了一个小程序,指定时间会打开浏览器播放一段音乐,提醒我们休息一会儿,防止我们猝死,说多了都是泪. 较基础,适合python新手及对python感兴趣的同学阅读. 我们来理一遍这个程序,大概功能是:我们设置一个时间,时间到了以后会打开浏览器播放一段音频. 1.等待 2.打开浏览器,播放音频. 3.重复

  • 用Python写一个自动木马程序

    电脑作为大家日常办公的工具,最怕的一件事情之一就是被偷,当我们的电脑被盗的时候,不仅仅是电脑本身,更重要的是电脑存储的资料都会丢失.如何尽快的找回电脑需要我们想点办法,今天就教大家一个好的技巧,虽说不能百分之百的好用,但是也能够发挥一定的效果. 小编本次是基于Linux下的展示,之所以基于Linux,是因为需要电脑在启动的时候,需要自动启动程序,做到出其不意,原因我会在最后给出. 程序是这样的,程序执行会首先调用笔记本的摄像头,拍摄笔记本面前的照片,然后,会给我们的预设邮箱,发送邮件,提醒我们电

  • 用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变.本文作为本次旅程的终点,希望从一个更高的视角对这些库进行横向对比,总结它们的异同点和使用场景,以期在应对不同场景时能够分析利弊,选择合适的库为己所用. 本系列文章默认使用 Python 3 作为解释器进行讲解.若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~ 二.设计理念 在讨论

  • Java可以写android的应用程序吗

    Java当然可以写android,android应用一般就是用java写的,另外android程序的界面也可以用HTML写,所以多多少少也要知道一点HTML的语法 ,不过android系统本身最底层的东西是用c写的.android开发用的是Java语言. Java也拥有自己强大的开源社区,当编写时遇到问题就能通过这些社区找到答案.android开发的教程,书籍和课程,包括免费和付费的,这些教程可以让先用java语言开始入门Android开发之路. Android代码,示例demo 和App都是用

  • 一起学写js Calender日历控件

    最近看了一下关于js日期的一些函数,突然想到了日历控件,于是试着写了一个,作为后台程序员的我水平有限,大家抱着学习的态度看看我写的这个例子吧,一起学习进步! 首先一个常用的日期函数: Date(year,month,day) var   date=new  Date(); 获取年份 var   year=this.date.getFullYear(); 获取月份,这里是月索引所以要+1 var   month=this.date.getMonth()+1; 获取当天是几号 var   day=t

  • 用PHP和Shell写Hadoop的MapReduce程序

    使得任何支持标准IO (stdin, stdout)的可执行程序都能成为hadoop的mapper或者 reducer.例如: 复制代码 代码如下: hadoop jar hadoop-streaming.jar -input SOME_INPUT_DIR_OR_FILE -output SOME_OUTPUT_DIR -mapper /bin/cat -reducer /usr/bin/wc 在这个例子里,就使用了Unix/Linux自带的cat和wc工具来作为mapper / reducer

  • python 写的一个爬虫程序源码

    写爬虫是一项复杂.枯噪.反复的工作,考虑的问题包括采集效率.链路异常处理.数据质量(与站点编码规范关系很大)等.整理自己写一个爬虫程序,单台服务器可以启用1~8个实例同时采集,然后将数据入库. #-*- coding:utf-8 -*- #!/usr/local/bin/python import sys, time, os,string import mechanize import urlparse from BeautifulSoup import BeautifulSoup import

随机推荐