?? calendar.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");
//創(chuàng)建導航
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);
//創(chuàng)建日歷頭部分
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";
}
//導航內(nèi)容
with(NavSpanpY) {
innerHTML = "<font color=red><</font>"
onclick = function() {deleteCalendar();calendar(Year-1,Month-1,new Date().getDate())}
}
with(NavSpanpM) {
innerHTML = " <"
onclick = function() {deleteCalendar();calendar(Year,Month-2,new Date().getDate())}
}
with(calendarNavTD) {
colSpan = 7;
className = "calendarNav";
}
with(NavSpannM) {
innerHTML = "> "
onclick = function() {deleteCalendar();calendar(Year,Month,new Date().getDate())}
}
with(NavSpannY) {
innerHTML = "<font color=red>></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 + -