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

首頁 > 語言 > JavaScript > 正文

js Calender控件使用詳解

2024-05-06 16:13:43
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了js Calender控件使用詳解,需要的朋友可以參考下
 
 

最近一直在趕項目。項目現在終于處于穩定的狀態,只是修修改改。作為后臺程序員的我真是苦逼啊,從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
亚洲精品欧美日韩| 日韩美女视频免费看| 久久人人爽人人爽人人片av高请| 国产精品成人va在线观看| 欧美最猛性xxxxx免费| 中文字幕亚洲字幕| 亚洲欧洲在线播放| 51精品国产黑色丝袜高跟鞋| 成人自拍性视频| 亚洲最大福利视频| 97久久精品人人澡人人爽缅北| 亚洲色图美腿丝袜| 亚洲成人av在线播放| 国产精品久久久久久久午夜| 日韩一区二区久久久| 国产视频在线一区二区| 98精品国产高清在线xxxx天堂| 亚洲精品久久7777777| 一级做a爰片久久毛片美女图片| 欧美成人三级视频网站| 日韩av中文在线| 高清欧美一区二区三区| 日韩欧美一区二区三区久久| 九九热这里只有精品6| 久久亚洲一区二区三区四区五区高| 亚洲成人黄色在线观看| 久久精品福利视频| 欧洲s码亚洲m码精品一区| 中文亚洲视频在线| 日韩av理论片| 亚洲毛片在线观看.| 国产精品极品美女粉嫩高清在线| 日韩av电影在线网| 色偷偷88888欧美精品久久久| 国产乱人伦真实精品视频| 一本色道久久88精品综合| 成人亚洲欧美一区二区三区| 国产精品视频一区国模私拍| 欧美精品一区二区三区国产精品| 日韩精品免费电影| 欧美丰满少妇xxxxx| 久久久久久久999| 亚洲午夜女主播在线直播| 欧美激情a∨在线视频播放| 欧美日韩免费看| 综合欧美国产视频二区| 91高清视频在线免费观看| 亚洲天堂网在线观看| 91国自产精品中文字幕亚洲| 夜夜躁日日躁狠狠久久88av| 国产一区二区日韩| 国产精品欧美日韩| 日韩欧美高清在线视频| 美女久久久久久久久久久| 国产精品久久久久久av福利软件| 亚洲女人天堂视频| 最近日韩中文字幕中文| 国产精品69精品一区二区三区| 久久av资源网站| 超薄丝袜一区二区| 中文字幕日韩有码| 久久久久久久久久久久av| 国产精品高潮呻吟久久av无限| 日韩av电影手机在线| 久久成人18免费网站| 国产精品一区二区av影院萌芽| 久久精品电影网| www.日韩欧美| 最新国产精品亚洲| 奇米一区二区三区四区久久| 久久久久五月天| 欧美激情中文字幕乱码免费| 国产黑人绿帽在线第一区| 国产区亚洲区欧美区| 久久久久亚洲精品国产| 中文字幕国产亚洲| 久久777国产线看观看精品| 国产99久久精品一区二区永久免费| 在线看片第一页欧美| 国产欧美精品久久久| 久久精品国产视频| 亚洲乱码国产乱码精品精天堂| 大桥未久av一区二区三区| 亚洲国产又黄又爽女人高潮的| 川上优av一区二区线观看| 国产九九精品视频| 欧美精品久久一区二区| 精品亚洲aⅴ在线观看| 国模精品视频一区二区| 中文字幕免费精品一区高清| 欧美激情精品在线| 亚洲丝袜一区在线| 色综合久久天天综线观看| 色午夜这里只有精品| 欧美日韩亚洲91| 亚洲成人av资源网| 亚洲奶大毛多的老太婆| 亚洲天堂久久av| 国产精品色婷婷视频| 91爱视频在线| 欧美性猛交xxxx偷拍洗澡| 日韩中文字幕在线视频| 亚洲黄色有码视频| 欧美另类xxx| 日韩av手机在线看| 亚洲无线码在线一区观看| 97久久久免费福利网址| 91精品国产99久久久久久| 欧美成人黑人xx视频免费观看| 久久久精品网站| 日韩av在线网址| 欧美日韩国产黄| 亚洲综合一区二区不卡| 久久精品久久久久久国产 免费| 日韩av影院在线观看| 亚洲欧洲国产精品| 美女久久久久久久| 欧洲成人午夜免费大片| 在线观看久久av| 国产精品美女主播| 亚洲一区二区福利| 国产91精品黑色丝袜高跟鞋| 国自在线精品视频| 国产成人精品在线视频| 国产精品久久婷婷六月丁香| 欧美性xxxx极品高清hd直播| 欧美与欧洲交xxxx免费观看| 九九视频这里只有精品| 中文字幕亚洲色图| 国产成人精品久久久| 久久久久久久999精品视频| 少妇精69xxtheporn| 日韩国产欧美精品在线| 日韩精品视频观看| 成人亚洲综合色就1024| 亚洲精品一区二区三区婷婷月| 欧美性资源免费| 成人免费看片视频| 日韩免费观看在线观看| 国产精品三级在线| 欧美激情亚洲综合一区| 欧美中文在线视频| 久久综合亚洲社区| 精品亚洲国产视频| 国产精品最新在线观看| 国模视频一区二区| 日韩av手机在线| 欧美性视频精品| 欧美小视频在线观看| xvideos亚洲| 国产成人精品综合久久久| 色婷婷综合成人| 亚州欧美日韩中文视频| 日韩欧美中文在线| 久久亚洲精品毛片| 国产一区二区三区在线观看视频| 亚洲伦理中文字幕| 久久久久久久久久久91| 国产精品爽爽爽爽爽爽在线观看| 欧美日韩国产成人在线| 91在线高清免费观看| 午夜精品视频在线| 精品久久久国产精品999| 久久网福利资源网站|