亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

js Calender控件使用詳解

 更新時(shí)間:2015年01月05日 11:22:14   投稿:hebedich  
這篇文章主要介紹了js Calender控件使用詳解,需要的朋友可以參考下

最近一直在趕項(xiàng)目。項(xiàng)目現(xiàn)在終于處于穩(wěn)定的狀態(tài),只是修修改改。作為后臺(tái)程序員的我真是苦逼啊,從web到手機(jī)端接口我都得寫,雜七雜八的事情。。。這兩天終于閑下來(lái)了,沒(méi)事兒看了一下關(guān)于js日期的一些函數(shù),突然想到了日歷控件,于是試著寫了一個(gè),作為后臺(tái)程序員的我水平有限,大家抱著學(xué)習(xí)的態(tài)度看看我寫的這個(gè)例子吧。。。

       首先一個(gè)常用的日期函數(shù):Date(year,month,day)

復(fù)制代碼 代碼如下:

  var   date=new  Date();

       獲取年份

復(fù)制代碼 代碼如下:

   var   year=this.date.getFullYear();

       獲取月份,這里是月索引所以要+1

復(fù)制代碼 代碼如下:

   var   month=this.date.getMonth()+1;

       獲取當(dāng)天是幾號(hào)

復(fù)制代碼 代碼如下:

   var   day=this.date.getDate();

       獲取當(dāng)天是周幾,返回0.周日   1.周一  2.周二  3.周三  4.周四  5.周五  6.周六

復(fù)制代碼 代碼如下:

   var   week=this.date.getDay();

       獲取當(dāng)月一號(hào)是周幾

復(fù)制代碼 代碼如下:

       var getWeekDay=function(year,month,day){
            var  date=new Date(year,month,day);
            return  date.getDay();
           }
   var  weekstart=  getWeekDay(this.year, this.month-1, 1)

       獲取當(dāng)月的天數(shù)

復(fù)制代碼 代碼如下:

         var  getMonthDays=function(year,month){
            var  date=new Date(year,month,0);
            return  date.getDate();
        }
        var   monthdays= this.getMonthDays(this.year,this.month);

        好了,我們用到的參數(shù)就這么多,后面其實(shí)就是關(guān)于日期對(duì)應(yīng)周幾的一些操作和判斷,動(dòng)態(tài)的拼接標(biāo)簽,下面就直接把我寫的例子發(fā)出來(lái):

復(fù)制代碼 代碼如下:

<html>   
<meta  http-equiv="content-type" content="text/html;charset=utf-8">
<head>
    <style type="text/css">
td{ text-align: center;}
    </style>
    <script type="text/javascript">
window.onload=function(){
    var   Calender=function(){
        this.Init.apply(this,arguments);
    }
    Calender.prototype={
        Init:function(container,options){
            this.date=new  Date();
            this.year=this.date.getFullYear();
            this.month=this.date.getMonth()+1;
            this.day=this.date.getDate();
            this.week=this.date.getDay();
            this.weekstart=this.getWeekDay(this.year, this.month-1, 1);
            this.monthdays= this.getMonthDays(this.year,this.month);
            this.containerDiv=document.getElementById(container);
            this.options=options!=null?options:{
                border:'1px  solid green',
                width:'400px',
                height:'200px',
                backgroundColor:'lightgrey',
                fontColor:'blue'
            }
        },
        getMonthDays:function(year,month){
            var  date=new Date(year,month,0);
            return  date.getDate();
        },
        getWeekDay:function(year,month,day){
            var  date=new Date(year,month,day);
            return  date.getDay();
        },
        View:function(){
            var  tablestr='<table>';
              tablestr+='<tr><td colspan="3"></td><td>年:'+this.year+'</td><td colspan="3">月:'+this.month+'</td></tr>';
            tablestr+='<tr><td width="14%">日</td><td width="14%">一</td><td width="14%">二</td><td width="14%">三</td><td width="14%">四</td><td width="14%">五</td><td width="14%">六</td></tr>';
            var  index=1;
            //判斷每月的第一天在哪個(gè)位置
            var  style='';
            if(this.weekstart<7)
            {
                tablestr+='<tr>';
                 for (var i = 0; i <this.weekstart; i++) {
                     tablestr+='<td></td>';
                 };
                 for (var i = 0; i < 7-this.weekstart; i++) {
                    style=this.day==(i+1)?"background-Color:green;":"";
                     index++;
                     tablestr+='<td style="'+style+'" val='+(this.year+'-'+this.month+'-'+(i+1))+'>'+(i+1)+'</td>';
                 };
                tablestr+='</tr>';
            }
            ///剩余天數(shù)對(duì)應(yīng)的位置
            //判斷整數(shù)行并且對(duì)應(yīng)相應(yīng)的位置
            var  remaindays=this.monthdays-(7-this.weekstart);
            var  row=Math.floor(remaindays%7==0?remaindays/7:((remaindays/7)+1))  ;
            var   count=Math.floor(remaindays/7);
            for (var i = 0; i < count; i++) {
                 tablestr+='<tr>';
                 for (var k = 0; k < 7; k++) {
                      style=this.day==(index+k)?"background-Color:green;":"";
                      tablestr+='<td style="'+style+'" val='+(this.year+'-'+this.month+'-'+(index+k))+'>';
                      tablestr+=index+k;
                      tablestr+='</td>';
                 };
                 tablestr+='</tr>';
                 index+=7;
            };
            //最后剩余的天數(shù)對(duì)應(yīng)的位置(不能填充一周的那幾天)
            var  remaincols=this.monthdays-(index-1);
            tablestr+='<tr>';
            for (var i = 0; i < remaincols; i++) {
                style=this.day==index?"background-Color:green;":"";
                tablestr+='<td style="'+style+'" val='+(this.year+'-'+this.month+'-'+(index))+'>';
                tablestr+=index;
                tablestr+='</td>';
                index++;
            };
            tablestr+='</tr>';
            tablestr+='</table>';
            return  tablestr;
        },
        Render:function(){
           var  calenderDiv=document.createElement('div');
           calenderDiv.style.border=this.options.border;
           calenderDiv.style.width=this.options.width;
           calenderDiv.style.height=this.options.height;
           calenderDiv.style.cursor='pointer';
           calenderDiv.style.backgroundColor=this.options.backgroundColor;
           // calenderDiv.style.color=this.options.fontColor;
           calenderDiv.style.color='red' ;
           calenderDiv.onclick=function(e){
                var  evt=e||window.event;
                var   target=evt.srcElement||evt.target;
                if(target&&target.getAttribute('val'))
                {
                    alert(target.getAttribute('val'));
                }
           }
            var  tablestr=this.View();
            this.tablestr=tablestr;
            calenderDiv.innerHTML=tablestr;
            var  div=document.createElement('div');
            div.style.width='auto';
            div.style.height='auto';
             div.appendChild(calenderDiv);
             ///翻頁(yè)div
            var  pagerDiv=document.createElement('div');
            pagerDiv.style.width='auto';
            pagerDiv.style.height='auto';
               var  that=this;
               ///重新設(shè)置參數(shù)
            var    resetPara=function(year,month,day){
                    that.date=new  Date(year,month,day);
                    that.year=that.date.getFullYear();
                    that.month=that.date.getMonth()+1;
                    that.day=that.date.getDate();
                    that.week=that.date.getDay();
                    that.weekstart=that.getWeekDay(that.year, that.month-1, 1);
                    that.monthdays= that.getMonthDays(that.year,that.month);
            }
            //上一頁(yè)
            var  preBtn=document.createElement('input');
             preBtn.type='button';
             preBtn.value='<';
              preBtn.onclick=function(){
                     that.containerDiv.removeChild(div);
                     resetPara(that.year,that.month-2,that.day);
                     that.Render();
             }
             //下一頁(yè)
              var  nextBtn=document.createElement('input');
             nextBtn.type='button';
             nextBtn.value='>';
             nextBtn.onclick=function(){
                     that.containerDiv.removeChild(div);
                     resetPara(that.year,that.month,that.day);
                     that.Render();
             }
             pagerDiv.appendChild(preBtn);
             pagerDiv.appendChild(nextBtn);
             div.appendChild(pagerDiv);
             var  dropDiv=document.createElement('div');
             var    dropdivstr='';
             //選擇年份
              dropdivstr+='<select id="ddlYear">';
              for (var i = 1900; i <= 2100; i++) {
                dropdivstr+=
                i==that.year
                ?'<option  value="'+i+'" selected="true">'+i+'</option>'
                : '<option  value="'+i+'">'+i+'</option>';
              };
             dropdivstr+='</select>';
           //選擇月份
            dropdivstr+='<select id="ddlMonth">';
              for (var i = 1; i <= 12; i++) {
                dropdivstr+=
                i==that.month
                ?'<option  value="'+i+'" selected="true">'+i+'</option>'
                : '<option  value="'+i+'">'+i+'</option>';
              };
             dropdivstr+='</select>';
             dropDiv.innerHTML=dropdivstr;
             div.appendChild(dropDiv);
           that.containerDiv.appendChild(div);
             ///綁定選擇年份和月份的事件
             var  ddlChange=function(){
                     var  ddlYear=document.getElementById('ddlYear');
                    var  ddlMonth=document.getElementById('ddlMonth');
                    var   yearIndex=ddlYear.selectedIndex;
                    var  year=ddlYear.options[yearIndex].value;
                    var   monthIndex=ddlMonth.selectedIndex;
                    var  month=ddlMonth.options[monthIndex].value;
                    that.containerDiv.removeChild(div);
                    resetPara(year,month-1,that.day);
                    that.Render();
             }
            ddlYear.onchange=function(){
                 ddlChange();
            }
             ddlMonth.onchange=function(){
                 ddlChange();
            }
        }
    }
    var   calender=new  Calender('dvTest',{
                border:'1px  solid green',
                width:'400px',
                height:'200px',
                backgroundColor:''
                }
                );
    calender.Render();
}
    </script>
</head>
<body>
  <div id="dvTest"></div>
</body>
</html>

        代碼重新做了改動(dòng),將視圖的table換為了div,是為了解決IE的tableinnerHTML的只讀問(wèn)題。另外加了options是為了可配置性。

        上面代碼有簡(jiǎn)單說(shuō)明,功能是最基礎(chǔ)的,如果更深入的做可以進(jìn)行擴(kuò)展

相關(guān)文章

  • 小程序視頻或音頻自定義可拖拽進(jìn)度條的示例代碼

    小程序視頻或音頻自定義可拖拽進(jìn)度條的示例代碼

    這篇文章主要介紹了小程序視頻或音頻自定義可拖拽進(jìn)度條的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • 實(shí)現(xiàn)51Map地圖接口(示例代碼)

    實(shí)現(xiàn)51Map地圖接口(示例代碼)

    這篇文章主要介紹了實(shí)現(xiàn)51Map地圖接口的示例代碼。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • JavaScript 實(shí)現(xiàn)自己的安卓手機(jī)自動(dòng)化工具腳本(推薦)

    JavaScript 實(shí)現(xiàn)自己的安卓手機(jī)自動(dòng)化工具腳本(推薦)

    這篇文章主要介紹了 JavaScript 實(shí)現(xiàn)自己的安卓手機(jī)自動(dòng)化工具腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 前臺(tái)js改變Session的值(用ajax實(shí)現(xiàn))

    前臺(tái)js改變Session的值(用ajax實(shí)現(xiàn))

    前臺(tái)js改變Session的值,有很多的新手朋友對(duì)此問(wèn)題會(huì)很陌生,本文將提供解決方法,需要了解的朋友可以參考下
    2012-12-12
  • javascript筆記之匿名函數(shù)和閉包

    javascript筆記之匿名函數(shù)和閉包

    這篇文章主要為大家詳細(xì)介紹了javascript筆記之匿名函數(shù)和閉包的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • bootstrap組件之導(dǎo)航組件使用方法

    bootstrap組件之導(dǎo)航組件使用方法

    Bootstrap 中的導(dǎo)航組件都依賴同一個(gè) .nav 類和ul,狀態(tài)類也是共用的。改變修飾類可以改變樣式。接下來(lái)通過(guò)本文給大家介紹bootstrap 導(dǎo)航組件使用方法,一起看看吧
    2017-01-01
  • 小程序中實(shí)現(xiàn)獲取全部數(shù)據(jù)的圖文教程

    小程序中實(shí)現(xiàn)獲取全部數(shù)據(jù)的圖文教程

    最近在開發(fā)中遇到了一個(gè)需求,需要獲取小程序的全部數(shù)據(jù),所以這篇文章主要給大家介紹了關(guān)于小程序中實(shí)現(xiàn)獲取全部數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • javascript 操作table的特性

    javascript 操作table的特性

    javascript操作table的特性,大家可以看下,發(fā)揮下,實(shí)現(xiàn)更多的功能。
    2009-09-09
  • Dom加載讓圖片加載完再執(zhí)行的腳本代碼

    Dom加載讓圖片加載完再執(zhí)行的腳本代碼

    當(dāng)大家使用window.onload執(zhí)行一個(gè)函數(shù)時(shí),必須要等到頁(yè)面上的圖片等信息全部加載完畢之后才執(zhí)行的。但很多時(shí)候圖片的數(shù)量比較多,所以需要很多時(shí)間下載。更令人尷尬的是,當(dāng)網(wǎng)頁(yè)文檔(或者說(shuō)Dom)已經(jīng)加載完畢,而圖片尚未加載完畢,很多用戶已經(jīng)開始瀏覽網(wǎng)頁(yè),但這時(shí)很多由window.onload所觸發(fā)的函數(shù)不能執(zhí)行,這就導(dǎo)致一部分功能不能完美地給用戶使用,更嚴(yán)重的是會(huì)給用戶留下不好的印象!
    2008-05-05
  • 原生js和jQuery隨意改變div屬性style的名稱和值

    原生js和jQuery隨意改變div屬性style的名稱和值

    用原生js和jQuery實(shí)現(xiàn)改變隨意改變div屬性style的名稱和值的結(jié)果,這個(gè)實(shí)例比較實(shí)用,新手朋友們可以看看
    2014-10-10

最新評(píng)論