中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

一起學寫js Calender日歷控件
來源:易賢網 閱讀:1549 次 日期:2016-07-08 11:04:30
溫馨提示:易賢網小編為您整理了“一起學寫js Calender日歷控件”,方便廣大網友查閱!

這篇文章主要和大家一起學寫js Calender控件,自己動手編寫了一個簡易日歷控件,感興趣的小伙伴們可以參考一下

最近看了一下關于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是為了可配置性。

上面代碼有簡單說明,功能是最基礎的,如果更深入的做可以進行擴展,希望這篇文章可以給大家一些啟發。

更多信息請查看網絡編程
易賢網手機網站地址:一起學寫js Calender日歷控件
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
99综合在线| 久久夜色精品国产欧美乱极品| 欧美不卡三区| 亚洲综合国产| 亚洲免费高清视频| 狠久久av成人天堂| 国产一区二区精品丝袜| 国产精品一区在线播放| 国产精品福利在线观看| 欧美日韩精品三区| 欧美日韩国产123| 欧美国产激情二区三区| 免费成人黄色av| 另类亚洲自拍| 嫩模写真一区二区三区三州| 久久久久久穴| 美日韩丰满少妇在线观看| 久久国产视频网| 久久天堂成人| 久久成年人视频| 久久不射网站| 久久黄色小说| 久久久久久久波多野高潮日日| 欧美一区永久视频免费观看| 销魂美女一区二区三区视频在线| 亚洲综合色激情五月| 亚洲在线免费视频| 亚洲一级影院| 欧美亚洲视频一区二区| 欧美中文字幕久久| 久久久久一区二区| 久久一区视频| 免费亚洲电影在线观看| 欧美激情一区二区三区蜜桃视频| 欧美成人免费va影院高清| 欧美国产日韩一区| 欧美视频在线不卡| 国产亚洲精品v| 亚洲国产经典视频| 中文精品一区二区三区| 久久成人羞羞网站| 蜜臀99久久精品久久久久久软件| 亚洲精品在线视频| 在线亚洲免费| 欧美影院午夜播放| 久久综合激情| 欧美午夜不卡在线观看免费 | 亚洲一区二区在线看| 性欧美精品高清| 欧美成黄导航| 国产精品一区二区久久久| 国产日韩欧美在线观看| 亚洲国产综合在线看不卡| 一本大道久久a久久精二百| 香蕉免费一区二区三区在线观看| 久久精彩免费视频| 欧美激情一区二区久久久| 国产精品v片在线观看不卡| 国产精品免费久久久久久| 欧美日本免费| 国产一区二区久久久| 日韩视频二区| 欧美一级理论片| 欧美激情五月| 国产一区视频在线观看免费| 99国产精品99久久久久久| 欧美专区18| 欧美日韩免费看| 狠狠入ady亚洲精品| 亚洲无毛电影| 欧美多人爱爱视频网站| 国产欧美日韩视频在线观看| 日韩午夜在线| 麻豆国产va免费精品高清在线| 国产精品久久久久影院色老大| 亚洲国产高清视频| 久久精品一本| 国产日韩在线不卡| 亚洲一区在线看| 欧美激情a∨在线视频播放| 国产真实精品久久二三区| 亚洲欧美欧美一区二区三区| 欧美理论电影在线播放| 影音先锋久久资源网| 久久国产福利| 国产精品裸体一区二区三区| 一区二区91| 欧美美女bbbb| 亚洲伦理网站| 欧美激情一区二区三区高清视频| 在线观看久久av| 久久九九热免费视频| 国产免费观看久久| 亚洲免费一在线| 国产精品久久久久久久一区探花 | 一本色道久久综合亚洲二区三区| 久久精品五月| 一区二区三区在线免费播放| 欧美制服第一页| 一区二区亚洲| 欧美成人官网二区| 99re在线精品| 国产精品伦理| 久久久国产视频91| 亚洲国产精品国自产拍av秋霞| 久久综合色天天久久综合图片| 黄色日韩网站视频| 欧美69视频| 99亚洲精品| 在线播放日韩| 亚洲专区在线| 免费不卡亚洲欧美| 国产精品嫩草久久久久| 一道本一区二区| 欧美日本一道本| 亚洲欧洲99久久| 欧美午夜精品伦理| 亚洲视频中文| 久久综合狠狠综合久久激情| 亚洲天堂男人| 欧美福利视频网站| 激情综合久久| 亚洲一区欧美| 国产精品爽黄69| 日韩一区二区免费高清| 久久成人国产| 国产视频丨精品|在线观看| 这里只有精品丝袜| 欧美大色视频| 激情久久久久久久久久久久久久久久| 在线午夜精品自拍| 美日韩精品视频| 久久精彩免费视频| 一区在线视频观看| 美女日韩欧美| 亚洲精品视频啊美女在线直播| 欧美黄色一区| 亚洲大胆视频| 欧美激情视频免费观看| 亚洲欧洲一区二区在线播放 | 欧美怡红院视频| 国产真实久久| 久久综合综合久久综合| 国产一区二区久久精品| 久久香蕉国产线看观看av| 亚洲一区二区三区在线看| 欧美视频网址| 亚洲伦理久久| 国语自产精品视频在线看抢先版结局 | 久久精品九九| 一本色道久久88综合日韩精品| 欧美另类变人与禽xxxxx| 亚洲欧美电影院| 一区二区三区产品免费精品久久75| 欧美激情精品久久久久久变态 | 欧美一级理论片| 亚洲经典视频在线观看| 国产精品永久免费视频| 美日韩丰满少妇在线观看| 一区二区三区中文在线观看| 国产欧美日韩亚洲精品| 久久久人成影片一区二区三区| 亚洲性色视频| 亚洲性感美女99在线| 一区二区高清视频在线观看| 国产一区在线看| 欧美日韩三级一区二区| 欧美电影免费| 欧美精品激情在线| 国产精品v片在线观看不卡 | 久久精品国产成人| 99天天综合性| 在线成人黄色| 亚洲精品一区二区三区福利| 国产真实久久| 亚洲国产精品成人综合色在线婷婷| 国产无遮挡一区二区三区毛片日本| 国产日韩一区二区三区| 精品av久久707| 亚洲国产日韩一区二区| 国产一区二区三区高清| 国产久一道中文一区| 黑人中文字幕一区二区三区| 亚洲国产一区二区a毛片| 在线观看av一区| 亚洲欧美国产毛片在线| 久久久精品动漫| 麻豆精品在线视频| 欧美激情亚洲| 欧美性猛交99久久久久99按摩| 国产精品一区二区你懂得| 国内外成人在线| 艳女tv在线观看国产一区| 欧美在线视频免费| 免费在线成人av| 国产精品va在线| 欧美日韩成人网| 国产主播一区二区三区四区| 亚洲国产精品一区二区第一页| 狠狠色狠狠色综合日日tαg|