⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calendar.js

📁 个人网站系统 毕业论文 大家可以借鉴下
💻 JS
字号:


Date.prototype.getLastDay = function(year,month) {
	if(month==12) {
		month=0,year=year+1;
	} else if(month==-1) {
		month=11,year=year-1;
	}
    if(arguments.length==2)
		return(new Date(year,month+1,0).getDate())
	else
		with(new Date())return(new Date(getYear(),getMonth(),0).getDate())
}
Date.prototype.FirstDayofWeek = function(year,month) {
    if(arguments.length==2)
		return(new Date(year,month,1).getDay())
	else
		with(new Date())return(new Date(getYear(),getMonth(),1).getDay());
}
//Call
calendar(new Date().getYear(),new Date().getMonth(),new Date().getDate())
function calendar(userY,userM,userD,haveRecords) {
//system variable
var i,j;
var now = new Date(userY,userM,userD);
var Year = now.getYear();
var Month = now.getMonth()+1;
var LastDay = now.getLastDay(userY,userM);
var FirstDayofWeek = now.FirstDayofWeek(userY,userM);
var Today = now.getDate();
var pMonthLastDay = now.getLastDay(userY,userM-1);
var MonthName = ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]
var WeekName = ["日","一","二","三","四","五","六"]
var haveRecord = window.name.split(",")
//user color
var tableCellpadding=1,tableCellspacing=1,tableBorder=0;
//append to where
oWhere = document.all.tar;
//Create Table
var calendarTable = document.createElement("table");
//创建导航
var calendarNavTR = calendarTable.insertRow();
var calendarNavTD = calendarNavTR.insertCell();
//嵌套表格
var NavInnerTable = document.createElement("table")
var NavInnerTR = NavInnerTable.insertRow();
for (var i=0;i<3;i++)NavInnerTR.insertCell();
var NavSpanpY = document.createElement("<span>");
var NavSpanpM = document.createElement("<span>");
var NavSpannY = document.createElement("<span>");
var NavSpannM = document.createElement("<span>");
with(NavInnerTR.cells) {
	item([0]).appendChild(NavSpanpY);
	item([0]).appendChild(NavSpanpM);
	item([2]).appendChild(NavSpannM);
	item([2]).appendChild(NavSpannY);
	//显示英文提示
	item([1]).innerText = Year+" "+"-"+" "+MonthName[Month-1];
	item([1]).width = "100%";
	item([1]).className = "calendarNavEnglish";
	//按钮
	item([0]).className = "calendarNavBar";
	item([2]).className = "calendarNavBar";
}
calendarNavTD.appendChild(NavInnerTable);
//创建日历头部分
var calendarMainTR = new Array();
for (i=0;i<7;i++) {
	calendarMainTR[i] = calendarTable.insertRow();
	for (j=0;j<7;j++)calendarMainTR[i].insertCell();
}
//表格属性
with(calendarTable) {
	cellPadding=tableCellpadding;
	cellSpacing=tableCellspacing;
	border=tableBorder;
	className="calendarTable";
}
//导航内容
with(NavSpanpY) {
	innerHTML = "<font color=red>&lt;</font>"
	onclick = function() {deleteCalendar();calendar(Year-1,Month-1,new Date().getDate())}
}
with(NavSpanpM) {
	innerHTML = "&nbsp;&lt;"
	onclick = function() {deleteCalendar();calendar(Year,Month-2,new Date().getDate())}
}
with(calendarNavTD) {
	colSpan = 7;
	className = "calendarNav";
}
with(NavSpannM) {
	innerHTML = "&gt;&nbsp;"
	onclick = function() {deleteCalendar();calendar(Year,Month,new Date().getDate())}
}
with(NavSpannY) {
	innerHTML = "<font color=red>&gt;</font>"
	onclick = function() {deleteCalendar();calendar(Year+1,Month-1,new Date().getDate())}
}
//日历头
var calendarHeadTR = calendarMainTR[0];
with(calendarHeadTR) {
	for (i=0;i<cells.length;i++)cells[i].innerText=WeekName[i];
	className="calendarHeadTR";
}
//日历主体
var k=1,h=1
for (i=1;i<calendarMainTR.length;i++) {
	calendarMainTR[i].className="calendarMainTR";
	for(j=0;j<calendarMainTR[i].cells.length;j++) {
		if (i==1&&j==FirstDayofWeek) {
			CreateDay();
		} else if (k>1&&k<=LastDay) {
			CreateDay();
		}
	}
}
deleteNoneRow();
//上个月
with(calendarTable.rows[2].cells) {
	for (i=length-1;i>=0;i--) {
		if(!item([i]).innerText) {
			item([i]).innerText = pMonthLastDay--;
			item([i]).className = "calendarPrevious";
			item([i]).attachEvent("onmouseover",function(){changeBg("#000000")})
			item([i]).attachEvent("onmouseout",function(){changeBg("#000000")})
		}
	}
}
//下个月
with(calendarTable.rows[calendarTable.rows.length-1].cells) {
	for (i=0,j=1;i<length;i++) {
		if(!item([i]).innerText) {
			item([i]).innerText = j++;
			item([i]).className = "calendarPrevious";
			item([i]).attachEvent("onmouseover",function(){changeBg("#000000")})
			item([i]).attachEvent("onmouseout",function(){changeBg("#000000")})
		}
	}
}

oWhere.appendChild(calendarTable);
/*Function*/
	//日历日期
	function CreateDay() {
		with(calendarMainTR[i].cells[j]) {
			isHaveRecord(i,j);
			if(k==Today)className="calendarToday";
			innerText = k++;
			attachEvent("onmouseover",function(){changeBg("#000000")})
			attachEvent("onmouseout",function(){changeBg("#000000")})
		}
	}
	function isHaveRecord(ii,jj) {
		if(Month==new Date().getMonth()+1) {
			for (var i=0;i<haveRecord.length;i++) {
				if(k==haveRecord[i]) {
					haveRecord.reverse().pop();
					haveRecord.reverse();
					calendarMainTR[ii].cells[jj].className="calendarHaveRecord";
					break;
				}
			}
		}
	}
	//删除空行
	function deleteNoneRow() {
		if(!calendarTable.rows[6].innerText)calendarTable.deleteRow(6);
		if(!calendarTable.rows[7].innerText)calendarTable.deleteRow(7);
	}
	//从页面里移除日历
	function deleteCalendar() {
		if(calendarTable)calendarTable.removeNode(true);
	}
	//单元格变色
	function changeBg(color) {
		with(event.srcElement)style.backgroundColor=currentStyle.backgroundColor==color?"":color;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -