亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js Calender控件使用詳解

2019-11-20 13:29:34
字體:
來源:轉載
供稿:網友

最近一直在趕項目。項目現在終于處于穩定的狀態,只是修修改改。作為后臺程序員的我真是苦逼啊,從web到手機端接口我都得寫,雜七雜八的事情。。。這兩天終于閑下來了,沒事兒看了一下關于js日期的一些函數,突然想到了日歷控件,于是試著寫了一個,作為后臺程序員的我水平有限,大家抱著學習的態度看看我寫的這個例子吧。。。

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

復制代碼 代碼如下:

  var   date=new  Date();

       獲取年份

復制代碼 代碼如下:

   var   year=this.date.getFullYear();

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

復制代碼 代碼如下:

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

       獲取當天是幾號

復制代碼 代碼如下:

   var   day=this.date.getDate();

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

復制代碼 代碼如下:

   var   week=this.date.getDay();

       獲取當月一號是周幾

復制代碼 代碼如下:

       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)

       獲取當月的天數

復制代碼 代碼如下:

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

        好了,我們用到的參數就這么多,后面其實就是關于日期對應周幾的一些操作和判斷,動態的拼接標簽,下面就直接把我寫的例子發出來:

復制代碼 代碼如下:

<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;
            //判斷每月的第一天在哪個位置
            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>';
            }
            ///剩余天數對應的位置
            //判斷整數行并且對應相應的位置
            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;
            };
            //最后剩余的天數對應的位置(不能填充一周的那幾天)
            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);
             ///翻頁div
            var  pagerDiv=document.createElement('div');
            pagerDiv.style.width='auto';
            pagerDiv.style.height='auto';
               var  that=this;
               ///重新設置參數
            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);
            }
            //上一頁
            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();
             }
             //下一頁
              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>

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

        上面代碼有簡單說明,功能是最基礎的,如果更深入的做可以進行擴展

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品久久久久久| 亚洲精品ady| 亚洲最大av在线| 在线视频国产日韩| 日本高清不卡的在线| 国产日韩欧美综合| 亚洲欧美激情视频| 欧美性xxxxxx| 国产日韩欧美一二三区| 51精品在线观看| 亚洲丝袜av一区| 欧美成人午夜激情| 国产欧美日韩专区发布| 欧美特黄级在线| 久久精品国产久精国产一老狼| 国产精品av在线| 欧美另类在线观看| 亚洲大胆人体在线| 91在线网站视频| 久操成人在线视频| 久久国产精品偷| 欧美精品一区三区| 91精品国产91久久久久久不卡| 欧美高清视频免费观看| 国产精品美女www| 国产精品成人aaaaa网站| 欧美黑人一级爽快片淫片高清| 国产精品久久久久久久电影| 色综合久久中文字幕综合网小说| 在线亚洲午夜片av大片| 欧美体内谢she精2性欧美| 国产成人午夜视频网址| 日韩国产一区三区| 日韩性生活视频| 亚洲第一综合天堂另类专| 欧美香蕉大胸在线视频观看| 欧美电影免费观看| 欧美天堂在线观看| 深夜福利日韩在线看| 136fldh精品导航福利| 91免费在线视频| 92看片淫黄大片欧美看国产片| 久久久噜噜噜久久| 精品一区二区电影| 亚洲一区二区三区四区视频| 亚洲一级黄色片| 2019最新中文字幕| 亚洲福利在线播放| 欧美性xxxxxxxxx| 日韩精品在线视频美女| 欧美精品videossex性护士| 日韩在线观看免费高清完整版| 欧美精品videos另类日本| 色悠悠久久88| 91精品国产91久久久久久久久| 日韩专区在线观看| 欧美成人午夜视频| 中文字幕av日韩| 在线成人一区二区| 91av在线播放视频| 色偷偷偷综合中文字幕;dd| 久久中国妇女中文字幕| 亚洲摸下面视频| 国产在线不卡精品| 亚洲小视频在线| 国产精品劲爆视频| 亚洲综合精品一区二区| 午夜精品一区二区三区在线| 国产精品盗摄久久久| 日本精品久久中文字幕佐佐木| 日韩高清av一区二区三区| 久久久久久久久久久久久久久久久久av| 91精品美女在线| 久久99久国产精品黄毛片入口| 成人看片人aa| 国产精品免费久久久久影院| 欧美久久久精品| 中国人与牲禽动交精品| 色小说视频一区| 亚洲激情中文字幕| 伊人伊成久久人综合网小说| 国产小视频国产精品| 亚洲国产小视频在线观看| 伊人男人综合视频网| 97免费在线视频| 久久人人爽人人爽人人片av高清| 国产视频久久网| 国产精品直播网红| 精品视频在线播放免| 久久免费国产视频| 国产日韩精品在线播放| 亚洲成人久久电影| 亚洲精品suv精品一区二区| 亚洲激情视频在线| 久久九九全国免费精品观看| 亚洲美女在线观看| 一本色道久久综合狠狠躁篇的优点| 日韩精品在线视频| 亚洲mm色国产网站| 久久精品在线视频| 久久久久久久影院| 亚洲一区免费网站| 欧美成人精品在线观看| 久久这里只有精品99| 黄色精品在线看| 国产精品综合不卡av| 久久九九国产精品怡红院| 亚洲自拍小视频免费观看| 91免费看片在线| 57pao成人永久免费视频| 欧美日韩亚洲网| 黄网站色欧美视频| 青草青草久热精品视频在线观看| 久久天天躁狠狠躁夜夜躁2014| 欧美精品午夜视频| 日韩美女在线观看一区| 精品国产精品三级精品av网址| 久久久久久久国产| 亚洲精品自拍视频| 国产精品影院在线观看| 日韩成人在线视频网站| 92看片淫黄大片看国产片| 久久影视三级福利片| 日韩在线观看免费全集电视剧网站| 日韩国产中文字幕| 午夜精品久久久久久久99黑人| 日本伊人精品一区二区三区介绍| 57pao国产精品一区| 午夜精品久久久久久久久久久久| 这里只有精品丝袜| 中国人与牲禽动交精品| 国产亚洲欧美aaaa| 欧美成人午夜剧场免费观看| 亚洲女人被黑人巨大进入al| 亚洲第一视频网站| 日韩美女免费线视频| 欧美日韩综合视频网址| 欧美性xxxxhd| 成人福利网站在线观看| 91在线免费看网站| 一区二区中文字幕| 国产色婷婷国产综合在线理论片a| 国产精品视频yy9099| 亚洲男子天堂网| 国产69精品99久久久久久宅男| 精品国产31久久久久久| 欧美夫妻性生活视频| 亚洲精品电影网| 亚洲欧洲在线免费| 欧美性生交大片免费| 亚洲欧洲自拍偷拍| 国产一区深夜福利| 欧美激情手机在线视频| 51精品国产黑色丝袜高跟鞋| 国产日本欧美一区二区三区在线| 黑人巨大精品欧美一区二区| 日本最新高清不卡中文字幕| 久久国产加勒比精品无码| 欧美高清视频在线播放| 日韩欧美一区二区三区久久| 欧美一级bbbbb性bbbb喷潮片| 超碰91人人草人人干| 久久伊人免费视频| 久久久精品一区二区三区|