多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > JavaScript制作的簡單日歷(附詳解)

JavaScript制作的簡單日歷(附詳解)

來源:程序員人生   發布時間:2013-10-18 10:00:41 閱讀次數:3255次

網(LieHuo.Net)教程 JavaScript制作的簡單日歷(附詳解)

[程序說明]主要為calendar類,里面的方法說明有:
getFirstDay:獲取每個月第一天再星期幾
getMonthLen:獲取當月總共有多少天
createCalendar:創建日歷方法
clearCalendar:清空TABLE方法
init:運行方法

[方法介紹]
getFirstDay中主要用了new Date()的getDay()方法,該方法是用于獲取日期所在星期幾.
但有一個特別需要注意的地方,就是getDay()方法所獲取的星期數如下:
星期日為0,星期一為1,星期二為2,星期三為3,星期四為4,星期五為5,星期六為6

getMonthLen方法用于獲取當月的天數,也就是目標為獲取當月最后一天的日期即可.
所以思維是獲取下個月第一天的0時,然后減去3個小時就可以得到當月天數.
nextMonth.setHours(nextMonth.getHours() - 3);
減去3小時的原因參考<<DHTML Cookbook>>是這樣說的:三個小時的修正用于處理在月份中包含了夏季時間到冬季時間的轉換時發生的日期計算的異常現象.
但這解釋我也不太理解,所以就直接按照巨人的做法做了,若果有人知道該異常現象是怎么回事,可以告訴我.
而該方法主要用了Date的setHours()和getDate()方法,分別用于獲得小時數和天數.

createCalendar創建日歷的方法,由于我自身本來寫好了HTML代碼,所以不直接用DOM來生成,這里主要是寫入日期數.
寫入日期的主要過程為:
for(var i = 1;i <= monthLen;i++){
calendar.dayTable[i+firstDay-1].innerHTML = i;
}
monthLen為getMonthLen()方法所獲取的當月長度,循環過程不應該超過該長度.
firstDay則由getFirstDay()方法獲得第一天的星期值,只要i+firstDay就可以得到開始第一天所在日歷單元格的位置,但由于數組從0開始,所以另外減去1.
在for循環插入值的過程中并判斷今天的日期,并為今天加入一個特別的id="today",代碼如下:
if((i+firstDay-2) == new Date().getDate() && calendar.month == new Date().getMonth() && calendar.year == new Date().getFullYear()){
calendar.dayTable[i+firstDay-1].id = 'today';
}

clearCalendar方法則用來每次換月的過程中,清空日歷,主要由for循環執行,過程比較簡單,所以不多詳細介紹.

另外特別說明2個單擊事件,都是換月作用,其中為向前一個月和向后一個月:
preMon.onclick = function(){
calendar.createCalendar(form,new Date(calendar.year,calendar.month-1,1));
}
nextMon.onclick = function(){
calendar.createCalendar(form,new Date(calendar.year,calendar.month+1,1));
}
由于把整體的year和month設置為calendar的屬性,所以只需在過程中對其月份進行加減即可.
其中由于在onclick事件中,所以this分別指向preMon和nextMon,所以在內部不使用this,直接使用calendar.在createCalendar不使用this也是這個原因.

[使用說明]
HTML和CSS樣式可以自行修改,但是整體不做太大改變的情況下.直接待用calendar類,并且使用init方法,把日歷HTML的id調入即可,如下:
calendar.init(calendars);

在整個過程中,需要注意的就是getFirstDay()和getMonthLen()方法的思維,只要了解了主要的部分.輸入日期的方法可以有很多.
改程序還有許多需要改進的地方,希望大家給點意見.~`尤其是在代碼里面,有哪些地方需要注意的,本人寫的代碼不太多,所以希望各位給與批評,然后我能發現錯誤進行改正.


提示:可修改后代碼再運行!

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲欧美在线看 | 免费看片亚洲 | 印度最猛性xxxxx | 日韩91| 久久久久久久久久久观看 | 国产一区二区在线观看麻豆 | 久久久www免费人成看片 | 日韩欧美中文字幕一区二区三区 | 国产精品精品国产一区二区 | xxxwww欧美性 | 久久久综合久久 | 三级不卡视频 | 欧美成人三级伦在线观看 | 伊人久久大香线蕉综合7 | 亚洲成人娱乐网 | 波多野结衣视频免费看 | 日韩国产免费一区二区三区 | 欧美视频一级 | 手机在线看福利 | 欧美第一页 | 黄色a网站 | 欧美福利网站 | 国产亚洲精品中文带字幕21页 | 久久精品久 | 在线精品自拍亚洲第一区 | 亚洲人免费 | 欧美在线视频 一区二区 | 在线视频欧美精品 | 中文字幕第12页 | 国产成人综合亚洲欧洲色就色 | 伊人久久大香线焦在观看 | 欧美日韩亚| 亚洲国产欧美一区 | 最近高清无吗免费看 | 国产免费看网站v片不遮挡 国产免费全部免费观看 | 毛片的网站 | 中文字幕在线精品视频入口一区 | 国产一区二区在线不卡 | 噜噜影院在线视频在线观看 | 国产精品久久久久9999赢消 | 国产成人高清亚洲一区久久 |