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

首頁 > 編程 > JavaScript > 正文

一起學寫js Calender日歷控件

2019-11-20 10:15:51
字體:
來源:轉載
供稿:網友

最近看了一下關于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
日韩成人中文电影| 亚洲综合大片69999| 国产精品视频成人| 欧美性生交xxxxxdddd| 日韩电影中文字幕一区| 日韩一二三在线视频播| 91美女片黄在线观看游戏| 91香蕉国产在线观看| 精品在线小视频| 97久久久免费福利网址| 午夜精品www| 亚洲第一精品福利| 久久久爽爽爽美女图片| 日韩精品免费一线在线观看| 久久久久日韩精品久久久男男| 亚洲国产成人在线播放| 亚洲第一区中文字幕| 97超级碰碰碰久久久| 国产精品麻豆va在线播放| 亚洲一区亚洲二区| 91网站在线免费观看| 成人黄色片网站| 在线中文字幕日韩| 国产精品 欧美在线| 最近2019中文免费高清视频观看www99| 欧美激情极品视频| 91精品国产高清久久久久久久久| 97精品欧美一区二区三区| 欧美激情精品久久久久久免费印度| 国产精品欧美日韩久久| 国产成人精品久久| 亚洲永久免费观看| 亚洲国产精品成人av| 日韩一区二区三区在线播放| 亚洲国产精彩中文乱码av在线播放| 亚洲男人的天堂网站| 亚洲欧美日韩爽爽影院| 亚洲精品成人免费| 亚洲国产精品免费| 欧美最猛性xxxxx亚洲精品| 成人精品一区二区三区电影黑人| 久国内精品在线| 日韩美女视频免费看| 97国产精品人人爽人人做| 欧美在线一区二区三区四| 国产日韩精品综合网站| 欧美视频中文字幕在线| 国产成人精品免高潮费视频| 国产精品亚洲аv天堂网| 欧美理论电影在线观看| 国产欧美日韩专区发布| 亚洲精品美女在线观看| 91中文精品字幕在线视频| 日本精品视频在线观看| 欧美视频专区一二在线观看| 亚洲欧美综合图区| 欧美日韩一区二区免费在线观看| 久久精品视频播放| 亚洲综合在线中文字幕| 久久99精品久久久久久青青91| 成人网中文字幕| 日韩久久免费电影| 久久精品免费电影| 亚州国产精品久久久| 成人性生交大片免费观看嘿嘿视频| 综合网中文字幕| 久久精品91久久香蕉加勒比| 日韩精品亚洲精品| 国产精品免费观看在线| 日韩国产激情在线| 亚洲黄色成人网| 国产一区二区美女视频| 国产专区精品视频| 亚洲热线99精品视频| 亚洲免费av片| 性欧美xxxx交| 欧美精品亚州精品| 国产精品国产福利国产秒拍| 中文字幕亚洲第一| 国产成人一区二区在线| 欧美性精品220| 久久久999国产精品| 午夜精品久久久久久久99黑人| 日韩精品高清在线观看| 精品国偷自产在线| 欧美精品久久久久a| 久久91精品国产91久久久| 中文字幕亚洲无线码在线一区| 国产免费一区二区三区在线观看| 中文综合在线观看| 中文字幕日韩欧美精品在线观看| 国产精品亚洲自拍| 欧美精品一二区| 久久视频免费在线播放| 国产成人精品午夜| 精品免费在线视频| 亚洲精品电影在线观看| 91精品国产高清自在线看超| 国产精品视频在线播放| 欧美成年人在线观看| 欧美xxxx综合视频| 亚洲精品免费一区二区三区| 国产精品网站大全| 久久久久久噜噜噜久久久精品| 亚洲国产日韩欧美综合久久| 精品亚洲夜色av98在线观看| 91亚洲精品久久久久久久久久久久| 色www亚洲国产张柏芝| 国产69精品久久久久久| 欧美精品在线免费播放| 久热精品视频在线观看| 欧美日韩中国免费专区在线看| 欧美限制级电影在线观看| 国产精品av网站| 国产欧美 在线欧美| 一区二区三区日韩在线| 亚洲人免费视频| 亚洲a∨日韩av高清在线观看| 欧美性高潮在线| 精品久久久久久中文字幕大豆网| 久久久久久一区二区三区| 精品国产91乱高清在线观看| 欧美日韩国产成人在线观看| 亚洲美女免费精品视频在线观看| 久久精品99国产精品酒店日本| 伦伦影院午夜日韩欧美限制| 国产成人午夜视频网址| 亚洲精品网站在线播放gif| 日韩在线播放一区| 欧美日韩成人精品| 成人亚洲激情网| 欧美日韩在线第一页| 亚洲精品国精品久久99热| 日韩亚洲成人av在线| 亚洲激情视频在线观看| 国语自产精品视频在线看一大j8| 欧美性jizz18性欧美| 亚洲欧美日韩在线一区| 91福利视频在线观看| 日韩成人久久久| 亚洲欧洲中文天堂| 亚洲国产成人精品久久| 日韩中文字幕在线视频| 亚洲色图13p| 国产999视频| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲xxxx3d| 亚洲伊人一本大道中文字幕| 国产精品久久久久av| 91免费看片在线| 亚洲va欧美va国产综合久久| 久久久免费精品视频| 久久久精品免费| 热久久美女精品天天吊色| 欧美中文在线免费| 上原亚衣av一区二区三区| 伦伦影院午夜日韩欧美限制| 欧美成人精品不卡视频在线观看| 97色在线播放视频| 一本色道久久88精品综合| 国产日韩欧美另类| 成人激情视频小说免费下载| 欧美猛交ⅹxxx乱大交视频| 日韩精品一区二区视频|