欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
JavaScript blog式日歷控件

近來(lái)要做一個(gè)記事本系統,想找一個(gè)合適的日歷控件,但網(wǎng)上的都是那種日歷選擇控件。
于是到qq的記事本系統找了一個(gè),但里面的算法有點(diǎn)落后,所以用了它的樣式自己寫(xiě)了個(gè)。

效果:

<<
>>
200811
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            


程序說(shuō)明

【Date】

這個(gè)日歷控件運用了很多Date相關(guān)操作和方法。

先說(shuō)說(shuō)Date對象幾個(gè)有用的屬性:
getFullYear:返回年份值
getMonth:返回月份值
getDate:返回一個(gè)月中的日期值
getDay:返回一周中的日期值

其中對getDay可能比較陌生,下面列出值對應的星期:
值 星期
0 星期天
1 星期一
2 星期二
3 星期三
4 星期四
5 星期五
6 星期六

這幾個(gè)屬性都是根據本地時(shí)間獲取的,還有g(shù)etUTCFullYear、getUTCMonth、getUTCDate、getUTCDay這幾個(gè)屬性是全球標準時(shí)間對應的值。

下面說(shuō)說(shuō)獲取日期對象,獲取當前日期很簡(jiǎn)單:

new Date()


獲取指定日期:

new Date(this.options.SelectDay)


獲取指定年月日的日期:

new Date(this.Year, this.Month - 1, d)


下面是幾個(gè)比較有技巧的地方:

首先,做日歷控件時(shí)需要知道該月第一天離星期天的天數,參照getDay對應值,發(fā)現這剛好等于該月第一天的getDay值,所以可以這樣獲得:

new Date(this.Year, this.Month - 11).getDay()

還有是獲取該月的天數,這里比較精妙,通過(guò)獲取該月最后一天的getDate值就可以得到該月的天數,但沒(méi)有辦法直接獲取該月最后一天。
這里有一個(gè)方法,當獲取指定年月日的日期時(shí),設置日參數為0,就可以獲取上一個(gè)月的最后一天,所以可以這樣獲?。?/p>

new Date(this.Year, this.Month, 0).getDate()


這個(gè)方法是很久以前在別人代碼中發(fā)現的。

使用說(shuō)明:

首先是實(shí)例化一個(gè)Calendar,并設置參數。
參數說(shuō)明:
Year:要顯示的年份
Month:要顯示的月份
SelectDay:選擇日期
onSelectDay:在選擇日期觸發(fā)
onToday:在當天日期觸發(fā)
onFinish:日歷畫(huà)完后觸發(fā)

一般SelectDay設置成選擇了的日期,并在onSelectDay中設置一個(gè)函數用來(lái)設置這個(gè)日期的樣式,
例如實(shí)例里SelectDay設置成今個(gè)月10號并在那天樣式設為onSelect:

SelectDay: new Date().setDate(10),
onSelectDay: 
function(o){ o.className = "onSelect"; },

而onToday就用來(lái)設置今日日期的樣式,
例如實(shí)例里面把今天的日期的樣式設為onToday:

onToday: function(o){ o.className = "onToday"; },

在onFinish中可以放需要設置日歷的程序。
可以通過(guò)this.Year和this.Month獲取當前日歷顯示的年份和月份。
對有數據的日期的也在這里設置,例如實(shí)例中是有一個(gè)當前月份的有數據的日期列表,然后根據這個(gè)列表對相應的日期進(jìn)行設置:

Code

實(shí)例中是固定了這個(gè)日期列表,實(shí)際應用中可以根據年份月份獲取對應的日期列表,
個(gè)人推薦用年份月份通過(guò)ajax獲取。

程序還有下面這幾個(gè)方法:
NowMonth:顯示當前月
PreMonth:顯示上一月
NextMonth:顯示下一月
PreYear:顯示上一年
NextYear:顯示下一年
PreDraw:根據日期參數畫(huà)日歷

程序代碼:


var $ = function (id) {
    
return "string" == typeof id ? document.getElementById(id) : id;
};

var Class = {
  create: 
function() {
    
return function() {
      
this.initialize.apply(this, arguments);
    }
  }
}

var Extend = function(destination, source) {
    
for (var property in source) {
        destination[property] 
= source[property];
    }
    
return destination;
}


var Calendar = Class.create();
Calendar.prototype 
= {
  initialize: 
function(container, options) {
    
this.Container = $(container);//容器(table結構)
    this.Days = [];//日期對象列表
    
    
this.SetOptions(options);
    
    
this.Year = this.options.Year || new Date().getFullYear();
    
this.Month = this.options.Month || new Date().getMonth() + 1;
    
this.SelectDay = this.options.SelectDay ? new Date(this.options.SelectDay) : null;
    
this.onSelectDay = this.options.onSelectDay;
    
this.onToday = this.options.onToday;
    
this.onFinish = this.options.onFinish;    
    
    
this.Draw();
  },
  
//設置默認屬性
  SetOptions: function(options) {
    
this.options = {//默認值
        Year:            0,//顯示年
        Month:            0,//顯示月
        SelectDay:        null,//選擇日期
        onSelectDay:    function(){},//在選擇日期觸發(fā)
        onToday:        function(){},//在當天日期觸發(fā)
        onFinish:        function(){}//日歷畫(huà)完后觸發(fā)
    };
    Extend(
this.options, options || {});
  },
  
//當前月
  NowMonth: function() {
    
this.PreDraw(new Date());
  },
  
//上一月
  PreMonth: function() {
    
this.PreDraw(new Date(this.Year, this.Month - 21));
  },
  
//下一月
  NextMonth: function() {
    
this.PreDraw(new Date(this.Year, this.Month, 1));
  },
  
//上一年
  PreYear: function() {
    
this.PreDraw(new Date(this.Year - 1this.Month - 11));
  },
  
//下一年
  NextYear: function() {
    
this.PreDraw(new Date(this.Year + 1this.Month - 11));
  },
  
//根據日期畫(huà)日歷
  PreDraw: function(date) {
    
//再設置屬性
    this.Year = date.getFullYear(); this.Month = date.getMonth() + 1;
    
//重新畫(huà)日歷
    this.Draw();
  },
  
//畫(huà)日歷
  Draw: function() {
    
//用來(lái)保存日期列表
    var arr = [];
    
//用當月第一天在一周中的日期值作為當月離第一天的天數
    for(var i = 1, firstDay = new Date(this.Year, this.Month - 11).getDay(); i <= firstDay; i++){ arr.push(0); }
    
//用當月最后一天在一個(gè)月中的日期值作為當月的天數
    for(var i = 1, monthDay = new Date(this.Year, this.Month, 0).getDate(); i <= monthDay; i++){ arr.push(i); }
    
//清空原來(lái)的日期對象列表
    this.Days = [];
    
//插入日期
    var frag = document.createDocumentFragment();
    
while(arr.length){
        
//每個(gè)星期插入一個(gè)tr
        var row = document.createElement("tr");
        
//每個(gè)星期有7天
        for(var i = 1; i <= 7; i++){
            
var cell = document.createElement("td"); cell.innerHTML = " ";
            
if(arr.length){
                
var d = arr.shift();
                
if(d){
                    cell.innerHTML 
= d;
                    
this.Days[d] = cell;
                    
var on = new Date(this.Year, this.Month - 1, d);
                    
//判斷是否今日
                    this.IsSame(on, new Date()) && this.onToday(cell);
                    
//判斷是否選擇日期
                    this.SelectDay && this.IsSame(on, this.SelectDay) && this.onSelectDay(cell);
                }
            }
            row.appendChild(cell);
        }
        frag.appendChild(row);
    }
    
//先清空內容再插入(ie的table不能用innerHTML)
    while(this.Container.hasChildNodes()){ this.Container.removeChild(this.Container.firstChild); }
    
this.Container.appendChild(frag);
    
//附加程序
    this.
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
編寫(xiě)一個(gè)簡(jiǎn)單的JS日歷
1986年的日歷與2014年的一致哎
JavaScript 判斷輸入的日期是否是合法日期的兩種方法
非常實(shí)用asp日歷代碼
js中將日期類(lèi)型轉換成字符串型格式(轉)_·°知足じ
js日期格式化
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久