我修改后的JavaScript日历!

本文介绍了一款使用JavaScript和CSS实现的日历插件,该插件可通过简单的代码嵌入到网页中,并支持链接到特定文档的功能。文章分享了完整的源代码及如何在网页中调用该日历的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多人在做博客的时候都会在自己的页面里加入一个日历,最近我也给做的网站里加入了一个。先前在网上收索了一翻关于此的源代码,看了下效果,感觉大多不尽如人意。偶然在一国外的网站上看见了一个不错的日历,主要是通过JavaScript中嵌入CSS来实现的,其中插入相应的代码还可以链接到自己的文档,相对来说还不错了。源码经过我修改了一番,现在此贴出,与大家共享。

核心脚本文件代码如下:
None.gif// 头部区域class设置
None.gif
document.write("<style type=text/css>\
None.gif<!--\
None.gif.cld_head_month {font-size: 11px;color: #5B557C;    font-family: Verdana, Arial, Helvetica, sans-serif;}\
None.gif.cld_title {color: #5B557C; font-size: 11px; font-family: Geneva, Arial, Helvetica, sans-serif; TEXT-DECORATION: none;}\
None.gif.cld_head_1 {color: #FFFFFF; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;background-Color: #CE5131;text-align: center; Height: 18px;Width: 20px;}\
None.gif.cld_head_2 {color: #FFFFFF; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;background-Color: #CECBCE;text-align: center;Width: 20px; }\
None.gif.cld_head_3 {color: #FFFFFF; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;background-Color: #CECBCE;text-align: center; Width: 20px;}\
None.gif.cld_head_4 {color: #FFFFFF; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;background-Color: #CECBCE;text-align: center; Width: 20px;}\
None.gif.cld_head_5 {color: #FFFFFF; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;background-Color: #CECBCE;text-align: center; Width: 20px;}\
None.gif.cld_head_6 {color: #FFFFFF; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;background-Color: #CECBCE;text-align: center; Width: 20px;}\
None.gif.cld_head_7 {color: #FFFFFF; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;background-Color: #0088C1;text-align: center;Width: 20px; }\
None.gif.day_2 {color: #5B557C; font-size: 11px; font-family: Geneva, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; text-align: center; Height: 18px;}\
None.gif.day_3 {color: #5B557C; font-size: 11px; font-family: Geneva, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; text-align: center;Height: 18px;}\
None.gif.day_4 {color: #5B557C; font-size: 11px; font-family: Geneva, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; text-align: center;Height: 18px;}\
None.gif.day_5 {color: #5B557C; font-size: 11px; font-family: Geneva, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; text-align: center;Height: 18px;}\
None.gif.day_6 {color: #5B557C; font-size: 11px; font-family: Geneva, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; text-align: center;Height: 18px;}\
None.gif.day_1 {color: #CE5131; font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 11px; TEXT-DECORATION: none; text-align: center;Height: 18px;}\
None.gif.day_7 {font-size: 11px; color: #0088C1; font-family: Geneva, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; text-align: center;Height: 18px;}\
None.gif.today{background-Color: #D0E6EF}\
None.gif-->\
None.gif</style>\
None.gif
");
None.gif
None.gif
None.gif
var c_y,c_m,c_d;
None.gif
var page_span_id;
None.gif
function calendar_url(year,month,day,link_name,css_class)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    month
++;
InBlock.gif    
if (month <10)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            month
="0"+month;
ExpandedSubBlockEnd.gif        }
;
InBlock.gif    
return link_name ; 
ExpandedBlockEnd.gif}

None.gif
None.gif
function getCalendar(year,month,day)//month:0-11
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
InBlock.gif    
//头部区域class配置
InBlock.gif
    headClassPrefix = "cld_head_";//css类名前缀,则须存在cld_head_1,cld_head_2dot.gifdot.gif.,cld_head_7这七个class
InBlock.gif
    headData = Array("S","M","T","W","T","F","S");
InBlock.gif    
//日期区域class配置
InBlock.gif
    dayClassPrefix = "day_";//css类名前缀,须存在day_1dot.gif..day_7这些class
InBlock.gif
    //链接格式化的回调函数名称
InBlock.gif
    linkFormatFunction = "calendar_url";//函数参数为(年,月,日,链接名称)    
InBlock.gif

InBlock.gif    
//头部的显示
InBlock.gif
    true_month = parseInt(month,10+ 1;
InBlock.gif    
if( true_month >=10 )
InBlock.gif        print_month
=true_month;
InBlock.gif    
else
InBlock.gif        print_month
="0"+true_month;
InBlock.gif    result 
= "<TABLE border=0 align=center cellpadding=0 cellspacing=1>";
InBlock.gif    result 
+= "<TR><TD colspan=7 align=center class=cld_head_month><a href=\"javascript:cldSetYear(-1);\" class=cld_title><font style=\"font-family:Webdings;cursor:hand\">3</font></a>年<a href=\"javascript:cldSetYear(1);\" class=cld_title><font style=\"font-family:Webdings;cursor:hand\">4</font></a>&nbsp;&nbsp;" + year + "." + print_month + " &nbsp;&nbsp;<a href=\"javascript:cldSetMonth(-1);\" class=cld_title><font style=\"font-family:Webdings;cursor:hand\">3</font></a>月<a href=\"javascript:cldSetMonth(1);\" class=cld_title><font style=\"font-family:Webdings;cursor:hand\">4</font></a></TD></TR>";
InBlock.gif    result 
+= "<TR>";
InBlock.gif    
for( i = 1 ; i <= 7 ; i ++ )
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        result 
+="<TD class=" + headClassPrefix + "" + i + ">" + headData[ i-1 ] +"</a>";
ExpandedSubBlockEnd.gif    }

InBlock.gif    result 
+= "</TR><TR>";
InBlock.gif    
InBlock.gif    
var current_date = new Date(year,month,1);
InBlock.gif    firstweekday 
= current_date.getDay();//得到本月第一天的星期数,0表示星期天
InBlock.gif
    var now = new Date();
InBlock.gif    
if(current_date.getYear() == now.getYear() && current_date.getMonth()==now.getMonth())
InBlock.gif        now_in_month
=true;
InBlock.gif    
else
InBlock.gif        now_in_month
=false;
InBlock.gif    
for( i = 1 ; i <= firstweekday ; i ++ )
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        result 
+= "<TD class="+ dayClassPrefix + "" + i +"></TD>";
ExpandedSubBlockEnd.gif    }

InBlock.gif    
for( i = 1;i<= 7 - firstweekday;i ++ )
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        weekday 
= i + firstweekday;
InBlock.gif        css_class 
=  dayClassPrefix + "" + weekday ;
InBlock.gif        link_exec 
= "link=" + calendar_url + "(" + year + "," + month + "," + i + "," + i + ",'" +css_class+"')" ;
InBlock.gif        eval(link_exec);
InBlock.gif        
if(now_in_month && i == now.getDate())
InBlock.gif            today
="today";
InBlock.gif        
else
InBlock.gif            today
="";
InBlock.gif            
InBlock.gif        result 
+= "<TD class='" + css_class + " " + today + "'>" + link + "</TD>";    
ExpandedSubBlockEnd.gif    }

InBlock.gif    result 
+= "</TR><TR>";
InBlock.gif    
var last_day = new Date(year,month+1,0);//下个月的0日即为本月的最后一日
InBlock.gif
    day_num = last_day.getDate();
InBlock.gif    weekday 
= 1;
InBlock.gif    
for( ; i<= day_num; i ++ )
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{        
InBlock.gif        
if( weekday == 8 )
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            result 
+= "</TR><TR>";
InBlock.gif            weekday 
= 1;
ExpandedSubBlockEnd.gif        }

InBlock.gif        css_class 
=  dayClassPrefix + "" + weekday ;
InBlock.gif        link_exec 
= "link=" + calendar_url + "(" + year + "," + month + "," + i + "," + i + ",'" +css_class+"')" ;
InBlock.gif        eval(link_exec);
InBlock.gif        
if(now_in_month && i == now.getDate())
InBlock.gif            today
="today";
InBlock.gif        
else
InBlock.gif            today
="";
InBlock.gif        result 
+= "<TD class='" + css_class + " " + today +"'>" + link + "</TD>";
InBlock.gif        weekday 
++ ;
ExpandedSubBlockEnd.gif    }

InBlock.gif    result 
+= "</TR>";
InBlock.gif    result 
+= "</TABLE>";
InBlock.gif    
return result;
ExpandedBlockEnd.gif}

None.gif
None.gif
function setSpanHtml(span_id,html)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    span
=document.getElementById(span_id);
InBlock.gif    span.innerHTML
=html;
ExpandedBlockEnd.gif}

None.gif
None.gif
function showCalendar(span_id)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    init_calendar();
InBlock.gif    year 
= c_y;
InBlock.gif    month 
= c_m;
InBlock.gif    day 
= c_d;
InBlock.gif    html 
= getCalendar(year,month,day);
InBlock.gif    setSpanHtml(span_id,html);
InBlock.gif    page_span_id 
= span_id;
InBlock.gif    c_y 
= year;
InBlock.gif    c_m 
= month;
InBlock.gif    c_d 
= day;
ExpandedBlockEnd.gif}

None.gif
function cldSetMonth( factor)//往前/后调动月份
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    c_m 
+= factor;
InBlock.gif    
if( c_m >= 12)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        c_m 
%= 12;
InBlock.gif        c_y 
++;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
if(c_m < 0 )
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        c_m 
= -c_m ;
InBlock.gif        c_m 
%= 12;
InBlock.gif        c_m 
= 12 - c_m;
InBlock.gif        c_y 
--;
ExpandedSubBlockEnd.gif    }

InBlock.gif    year 
= c_y ; 
InBlock.gif    month 
= c_m ;
InBlock.gif    day 
= c_d ;
InBlock.gif    setCldPara();
InBlock.gif    span_id 
= page_span_id;
InBlock.gif    html 
= getCalendar(year,month,day);
InBlock.gif    setSpanHtml(span_id,html);
ExpandedBlockEnd.gif}

None.gif
function cldSetYear( factor )//往前/后调动年
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    c_y 
+= factor;
InBlock.gif    year 
= c_y ; 
InBlock.gif    month 
= c_m ;
InBlock.gif    day 
= c_d ;
InBlock.gif    setCldPara();
InBlock.gif    span_id 
= page_span_id;
InBlock.gif    html 
= getCalendar(year,month,day);
InBlock.gif    setSpanHtml(span_id,html);
ExpandedBlockEnd.gif}

None.gif
None.gif
function init_calendar()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
if( getCookie("cld_c_y")=="" )
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
var today = new Date();
InBlock.gif        c_y 
= today.getYear();
InBlock.gif        c_m 
= today.getMonth();
InBlock.gif        c_d 
= today.getDate();
InBlock.gif        setCldPara();
ExpandedSubBlockEnd.gif    }

InBlock.gif    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        getCldPara();
ExpandedSubBlockEnd.gif    }
    
ExpandedBlockEnd.gif}

None.gif
function getCldPara()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif        c_y 
= parseInt( getCookie("cld_c_y") , 10);
InBlock.gif        c_m 
= parseInt( getCookie("cld_c_m") , 10 );
InBlock.gif        c_d 
= parseInt( getCookie("cld_c_d") , 10);
ExpandedBlockEnd.gif}

None.gif
function setCldPara()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif        setCookie(
"cld_c_y",c_y,60*60*24*365);
InBlock.gif        setCookie(
"cld_c_m",c_m,60*60*24*365);
InBlock.gif        setCookie(
"cld_c_d",c_d,60*60*24*365);    
InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif
//=============Cookie 操作 
None.gif//
*
ExpandedBlockStart.gifContractedBlock.gif
function setCookie (name, value, expires) dot.gif{
InBlock.gif    
var expdate=new Date();
InBlock.gif    expdate.setTime(expdate.getTime()
+(expires*1000));
InBlock.gif    document.cookie 
= name + "=" + escape(value) +   "; expires=" + expdate.toGMTString() +  ";";
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function getCookie(name) dot.gif{
InBlock.gif  
var search;
InBlock.gif  search 
= name + "="
InBlock.gif  offset 
= document.cookie.indexOf(search) 
ExpandedSubBlockStart.gifContractedSubBlock.gif  
if (offset != -1dot.gif{
InBlock.gif    offset 
+= search.length ;
InBlock.gif    end 
= document.cookie.indexOf(";", offset) ;
InBlock.gif    
if (end == -1)
InBlock.gif      end 
= document.cookie.length;
InBlock.gif    
return unescape(document.cookie.substring(offset, end));
ExpandedSubBlockEnd.gif  }

InBlock.gif  
else
InBlock.gif    
return "";
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function deleteCookie(name) dot.gif{
InBlock.gif  setCookie(name, 
"",-86400*1000*1);
ExpandedBlockEnd.gif}

None.gif
//==============================================Cookie 结束

页面调用:
在页面插入下列代码:
None.gif<script language="javascript" src="上述脚本文件的相对地址"></script>
None.gif
<script language="javascript">
None.gif
<!--
None.gifshowCalendar(
"calendar");
None.gif
-->
None.gif
</script>

然后在需要调用日历的地方用下列代码调用。
None.gif<span id="calendar"></span>

转载于:https://www.cnblogs.com/coolar/archive/2006/07/29/462772.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值