您的位置:首页 > 其它

简易日历插件(纯练习玩玩)

2016-02-28 19:58 351 查看
CSS

table{ width: 400px; }
table,td{ border:1px solid white; text-align: center; }


网页调用

var target = document.getElementById('target');  //日历添加到网页某个元素里
calendar = new Calendar(target);


calendar.js

function Calendar(targetId){
this.targetId = targetId;
this.createDOM();
this.calendarBody = document.getElementById("calendarBody"); //日历主体部分
this.calendarTd = this.calendarBody.getElementsByTagName('td'); //日历主体部分
this.currentDate = document.getElementById('currentDate'); //当前月,用于显示当前是哪年哪月
this.preMonth = document.getElementById('preMonth');  //上一个月链接
this.nextMonth = document.getElementById('nextMonth');  //下一月链接

this.eachMothDays = [31,28,31,30,31,30,31,31,30,31,30,31]; //设置每个月月份的数组
this.initCalendar();
var that = this;
this.preMonth.onclick = function(){
that.getPreMonth();
};
this.nextMonth.onclick = function(){
that.getNextMonth();
};
}
Calendar.prototype = {
constructor:Calendar,
createDOM:function(){
var DOMStr = "<table cellpadding='0' cellspacing='0' id='calendar'>"+
"<thead>"+
"<tr><td colspan='2' id='preMonth'>上一月</td><td colspan='3' id='currentDate'></td>"+
"<td colspan='2' id='nextMonth'>下一月</td></tr>"+
"<tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>"+
"</thead>"+
"<tbody id='calendarBody'>"+
"<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"+
"<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"+
"<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"+
"<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"+
"<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"+
"<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"+
"</tbody>"+
"</table>";
this.targetId.innerHTML = DOMStr;
},
initCalendar:function(){  //初始化日历,默认情况下显示当前月份的
var date = new Date(); //初始化的情况下,选取当前月份
if(date.getFullYear() % 4 == 0 && date.getFullYear() % 100 != 0 ){
this.eachMothDays[1] = 29;
}
this.preMonth.month = date.getMonth();  //给上一个月绑定一个月份数字
this.nextMonth.month = parseInt(date.getMonth()) + 2; //给下一个月绑定一个月份数字
this.currentDate.year = date.getFullYear();
this.currentDate.innerHTML = date.getFullYear() +"年"+ (date.getMonth()+1) + "月";

var firstDay = this.getFirstDay(date.getFullYear(),date.getMonth());  //获取每个月一号第一天是星期几
this.fillDate(firstDay,date.getMonth()); //填充日期
},
getFirstDay:function(year,month){  //获取每个月第一天是星期几
//console.log(year,month);
var eachMonthFirstDay = new Date(year,month,1);
//console.log(eachMonthFirstDay.getDay());
return eachMonthFirstDay.getDay();
},
fillDate:function(firstDay,month){  //根据获得的每个月第一天是星期几进行循环填充数据
//console.log(firstDay,month);
for(var j=0;j<42;j++){  //再次填充月份之前把当前数据全部清空
this.calendarTd[j].innerHTML = "";
}
for(var i = 1;i<=this.eachMothDays[month];i++,firstDay++){
this.calendarTd[firstDay].innerHTML = i;
}
},
getPreMonth:function(){
//console.log(this.currentDate.year+","+this.preMonth.month);
if(this.preMonth.month < 1){
this.currentDate.year = this.currentDate.year -1;
this.preMonth.month =  12;
}
var firstDay = this.getFirstDay(this.currentDate.year,this.preMonth.month-1);
this.fillDate(firstDay,parseInt(this.preMonth.month)-1);

this.currentDate.innerHTML = this.currentDate.year+"年"+this.preMonth.month+"月";
this.preMonth.month = this.preMonth.month - 1;
this.nextMonth.month = this.nextMonth.month+1;
//console.log(this.preMonth.month+","+this.nextMonth.month);
},
getNextMonth:function(){
console.log(this.currentDate.year+","+this.nextMonth.month);
if(this.nextMonth.month > 12){
this.currentDate.year = this.currentDate.year + 1;
this.nextMonth.month =  1;
}
var firstDay = this.getFirstDay(this.currentDate.year,this.nextMonth.month-1);
this.fillDate(firstDay,parseInt(this.nextMonth.month)-1);
this.currentDate.innerHTML = this.currentDate.year+"年"+this.nextMonth.month+"月";
this.preMonth.month = this.preMonth.month -1;
this.nextMonth.month = this.nextMonth.month+1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: