附件提供了完整的演示文档。目前只支持IE。
var CALT_MONTH_LENGTH = [31,28,31,30,31,30,31,31,30,31,30,31]; //平年的月份天数 var CALT_LEAP_MONTH_LENGTH = [31,29,31,30,31,30,31,31,30,31,30,31]; //闰年的月份天数 /** * 判断某年是否是闰年 * @param $year */ function isLeapYear($year) { return (($year % 4 == 0) && (($year % 100 != 0) || ($year % 400 == 0))); } /** * 获取某年某月的天数 * @param $month * @param $year */ function monthLength($month, $year) { return isLeapYear($year) ? CALT_LEAP_MONTH_LENGTH[$month] : CALT_MONTH_LENGTH[$month]; } /** * 根据给定的年份和月份绘制日历 * @param year 给定的年份 * @param month 给定的月份 * @return 日历 */ function paintCalendar(year,month){ var time=new Date(); time.setYear(year); time.setMonth(month-1); var monthLen=monthLength(month-1,year); var count=0; var sb=[]; sb.push("<tr>"); for(var i=1;i<=monthLen;i++){ time.setDate(i); var week=time.getDay(); if(0==week && i==1){ //1号恰好是星期日 sb.push(createTableTD(6)); sb.push("<td>"); sb.push(i); sb.push("</td>"); count=7; }else{ if(i!=1){ sb.push("<td>"); sb.push(i); sb.push("</td>"); count++; }else{ sb.push(createTableTD(week-1)); sb.push("<td>"); sb.push(i); sb.push("</td>"); count += week; } } if(count==7){ count=0; sb.push("</tr>"); if(i!=monthLen){ sb.push("<tr>"); } } if(i==monthLen){ sb.push(createTableTD(7-count)); sb.push("</tr>"); } } return sb.join(""); } function createTableTD(lows){ var tmp=[]; for(var i=0;i<lows;i++){ tmp.push("<td></td>"); } return tmp.join(""); }