在网页上制作一个日历,利用jquery实现它,其实也不是很困难,参照网上的部分思想自己再深加工,一个精美的日历也就能呈现了
接下来谈谈实现它的函数思想
var date = new Date();
var show_day=new Array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
var seperator1 = "-";
var yearNow = date.getFullYear();
var year = yearNow;
var monthNow = date.getMonth() + 1;
var month = monthNow;
var strDateNow = date.getDate();
var strDate=strDateNow;
var day = date.getDay();
var n1str = new Date(year, month-1, 1); // 当月第一天Date
var initfirstday = n1str.getDay(); // 当月第一天星期几
var daynumber = getMonthAllDay(month-1, year);
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + seperator1 + month + seperator1 + strDate;
$(".dp-input").val(currentdate);
$(".weekinfo").text(show_day[day]);
$('input[name="current-year"]').val(year);
$('input[name="current-month"]').val(month);
// 是否为闰年
function is_leap(year) {
return (year % 100 == 0 ? res = (year % 400 == 0 ? 1 : 0)
: res = (year % 4 == 0 ? 1 : 0));
}
// 获取当月的天数
function getMonthAllDay(month, year) {
var m_days = new Array(31, 28 + is_leap(year), 31, 30, 31, 30, 31, 31, 30,
31, 30, 31);
return m_days[month];
}
// 获得某年某月某日是星期几
function getFirstWeekDay(year, month, day) {
var date = new Date();
date.setFullYear(year);
date.setMonth(month);
date.setDate(day);
return date.getDay();
}
使用date()方法创建对象获取到当前年月,这里要注意到日的获取只能获取到当前星期的数字,并且它所获取到的月份数字比实际月份也会小一个月
/* 显示日历 */
function showCanledar(month, firstday, dnow, allday) {
var rows = requiredRows(allday, firstday);
$(".cal-header").next().remove();
var tb = " <table data-v-67941c3e>";
tb += "<thead data-v-67941c3e>";
tb += "<tr class='datepicker-weekday' data-v-67941c3e>";
tb += "<th data-v-67941c3e>日</th>";
tb += "<th data-v-67941c3e>一</th>";
tb += "<th data-v-67941c3e>二</th>";
tb += "<th data-v-67941c3e>三</th>";
tb += "<th data-v-67941c3e>四</th>";
tb += "<th data-v-67941c3e>五</th>";
tb += "<th data-v-67941c3e>六</th>";
tb += "</tr></thead>";
tb += "<tbody data-v-67941c3e>";
for (var i = 0; i < rows; i++) {
tb += "<tr data-v-67941c3e>";
for (var k = 0; k < 7; k++) { // 表格每行的单元格
var idx = i * 7 + k; // 单元格自然序列号
var date_str = idx - firstday + 1; // 计算日期
if(date_str <= 0 || date_str > allday){
tb+="<td class='cal-day' data-v-67941c3e></td>";
}else if (date_str == dnow){
tb+="<td class='cal-day cur selectable today' data-v-67941c3e>" +date_str + "</td>";
}else if (date_str > 0 && date_str < dnow){
tb+="<td class='cal-day' data-v-67941c3e>" +date_str + "</td>";
}else{
tb+="<td class='cal-day cur selectable' data-v-67941c3e>" +date_str + "</td>";
}
// 过滤无效日期(小于等于零的、大于月总天数的)
// 打印日期:今天底色为红
// 查询月签到情况
}
tb += "</tr>";
// 表格的行结束
}
tb += "</tbody>"
tb += "</table>"; // 表格结束
$(".cal-header").after(tb);
}
此处使用函数动态创建日历生成,接下来我们实现日历的月份查看
// 获得上一个改变的月
function getPrevMonth(month,year,yearNow,monthNow) {
if(month == monthNow && year == yearNow) {
}else if(month == 1){
month = 12;
year=parseInt(year)-1;
}else {
month=parseInt(month)-1;
/*alert("changePrev"+month)*/
}
$('input[name="current-year"]').val(year);
$('input[name="current-month"]').val(month);
}
// 获得下一个改变的月
function getNextMonth(month,year) {
if(month == 12 ){
month = 1;
year=parseInt(year)+1;
}else{
month=parseInt(month)+1;
/*alert("changeNext"+month);*/
}
$('input[name="current-year"]').val(year);
$('input[name="current-month"]').val(month);
}
函数判断当前月份是否为1月或者12月,根据月份的选择获取到对应的年份,通过动态效果实现上一个月和下一个月的查看
更多推荐
网页实现制作一个小日历
发布评论