js实现简单的日历显示效果函数示例
本文实例讲述了js实现简单的日历显示效果函数。分享给大家供大家参考,具体如下:
用一个函数简单的实现一个月份的日历,效果如下:
这个日历效果有高亮显示,我实现的思维比较简单。
我把上面的日历效果用表格table生成,分成两个部分。
第一个部分:就是前面的第一排,我用一行
第二部分:就是剩下的所有排,这里我用五行
这里为什么要用6行
下面是代码:
js的日历 tabletrtd{ width:27px; text-align:center; } (function(){ //获取日历的函数,参数是年份year和月份Month,默认是今年当月的日历 functiongetcalendar(year,month){ year=year?year:newDate().getFullYear(); //month是0开始到11结束的,获取当前月份必须加1 month=month?month:newDate().getMonth()+1; varlast=newDate(year,month-1,0); varlastdate=last.getDate();//获取上个月的最大日期 varlastday=last.getDay();//获取上个月最大日期的星期几 varmonths=newDate(year,month,0); varMaxdate=months.getDate();//获取这个月最大的日期 //获取当前的日期,为的是高亮显示当前的日期 vartoday=newDate().getDate(); varthisyear=newDate().getFullYear(); varthismonth=newDate().getMonth()+1; varstr=' '; returnstr; } returnwindow.calendar=getcalendar; })(); document.write(calendar(2018,1));
\< '+year+'年'+month+'月 \> '; //获取上个月在这个月份中存在的最后日期 varremainlastdate=lastdate-lastday; vart=1; str+=' 日 一 二 三 四 五 六 '; for(varg=0;g<=6;g++){ //星期是从0开始到6结束的,小于等于上个月最大星期的日期则是上个月的日期 if(g<=lastday){ str+=' '; //除去上面的部分,这个月从哪里开始 varremainlastday=6-lastday+1; varnextMonthday=1;//下一个月份的开始日期 //这里i最大值为5是为了兼容所有的月份,有的月份可能跨越6个tr for(vari=1;i<=5;i++){ str+=''+remainlastdate+++' '; }else{ //高亮显示当前日期 if(thisyear==year&&thismonth==month&&today==t){ str+=''+t+++''; //假如不是当前月份则默认1为高亮日期 }elseif((thisyear!=year&&t==1)||(thismonth!=month&&t==1)){ str+=' '+t+++''; }else{ //该月份的普通日期 str+=' '+t+++''; } } } str+=' '; for(varj=0;j<7;j++){ if(remainlastday<=Maxdate){ if(thisyear==year&&thismonth==month&&today==remainlastday){ str+=' '; } str+=''+remainlastday+++''; }else{ if((thisyear!=year&&remainlastday==1)||(thismonth!=month&&remainlastday==1)){ //剩下的天数从这里开始的话,默认的第一天还是为红色 str+=' '+remainlastday+++''; }else{ str+=' '+remainlastday+++''; } } }else{ str+=' '+nextMonthday+++' '; } } str+='