成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

jQuery--聯動日歷

開發(fā) 前端
我總結了一下,就是需要“聯動”的東西,必定有一個“點”(先這么叫吧),其它需要變化,都要和這個點相關聯起來,這樣改變這個點,其它和這個點關聯的東西,也就都會發(fā)生改變,也就實現了“聯動”這一效果。

來看下效果圖

一、先來說下功能:

1.點擊“確定”顯示日歷  

2.再次點擊隱藏,或從DOM中刪除這個日歷。如些反復第一,和第二這兩步。

3.讓日歷中顯示當前月份日期(多少天,每天是多少號)。

4.讓當前月份的日期和星期幾對應.

5.讓左邊兩邊的日歷關聯起來。

二、再來說下HTML結構。

1.上面藍色的是一個DIV,顯示當前月分,和上月,下月。

2.下面的日期和星期,是用一個table結構存放數據。星期用thead,日期用:tbody存放。

三、功能展開分析:

3.1、前兩個功能?

讓我想起使用JQUERY里面的toggle。很方便就可以解決。

3.2、讓日歷中顯示當前月份日期數?

既然跟日期有關的,肯定會想起Deta這個對象了。在這個對象中,我們可以獲取或設某年,某天,某月,某日,某星期幾。但就是不能直接獲取這一個月中有多少天。?怎么辦呢?

所以我們只能用判斷了。根據當前月份的數值。來把天數存到一個變量當中。(對象獲取到的當前月份要+1。國它是從零開始計算的).

比如現在是五月,根據判斷,五月是大,所以變量中就存31這個數值;即這個月有31天。

3.3、讓當前月份的日期和星期幾對應.??

這個問題,解決辦法就是,獲取到當月一號,對應的星期幾。后面的就可以依次排列下去了。這里的依次排列,我理解的是,因為存放日期的都是TD標簽,在TBODY里面這些TD的索引,都是排列好的,所以把一號插入到那個TD當中,后面的二號,就會插入到后一個TD當中了。

3.4、讓左邊兩邊的日歷關聯起來。

這里重點是“關聯”:我最近寫了“倒計時”,再就是這次的"聯動日歷",還有讓我想起了“聯動下拉菜單”,比如省份和市的聯動下拉菜單;這些都涉汲到“聯動”.

我總結了一下,就是需要“聯動”的東西,必定有一個“點”(先這么叫吧),其它需要變化,都要和這個點相關聯起來,這樣改變這個點,其它和這個點關聯的東西,也就都會發(fā)生改變,也就實現了“聯動”這一效果。

比如,上次的“倒計時”,里面的“點”,就是當前時間和設定以后時間,之前相差的"總毫秒數"。倒計時顯示的,時,分,秒,都和這個"總毫秒數"有關聯,只要這個“總毫秒數”變化,那么時,分,秒,都會變化,這就是"聯動"了.

這次的日歷聯動,里面的"點",就是當前創(chuàng)建日期對象后,獲得的年,月。根據這個年,月,來去設置右邊,即下個月該顯示的東西。那么只要當前獲取的年,月,有變化,后面的自然也會變化。也就“聯動”了。

當然里面還是有點小多細節(jié),處理。

四、上代碼,太長了,所以只放了結構,里面的內容可以下載文章最后的DEMO

  1. $(function(){  
  2.     var nowDate = $(".nowDate"),        //左邊的日歷盒子  
  3.         nextDate = $(".nextDate"),        //右邊的日歷盒子  
  4.         lstrTd = "",                    //左日期的行的DOM結構  
  5.         rstrTd = "",                    //右日期的行的DOM結構  
  6.         lrows = 0,                        //左日期行數  
  7.         rrows = 0,                        //右日期行數  
  8.          iHtmlNow = "",                    //左邊的日歷結構  
  9.          iHtmlNext = "",                    //右邊的日歷的結構  
  10.          nowTitleDateY = "",                //左邊標題年份  
  11.           nowTitleDateM = "",                //左邊顯示的月份  
  12.         nowlastM = "",                    //左邊的翻月顯示  
  13.          nextTitleDateY = "",            //右邊標題年份  
  14.          nextTitleDateM = "",            //右邊顯示的月份  
  15.         nextLastM = "",                    //右邊的翻月顯示  
  16.          creatbtu = true,                //只創(chuàng)建一次HTML結構的開關  
  17.         NumDay = 0,                    //左邊每個月的天數;  
  18.         rNumDay = 0,                    //左邊每個月的天數;  
  19.         lfday = 0,                        //左邊當前月份的第一天,是星期幾  
  20.         rfday = 0;                        //右邊當前月份的第一天,是星期幾  
  21.                       
  22.     //創(chuàng)建日期行  
  23.     function creatTr(l,r){  
  24.  
  25.     }  
  26.       
  27.     /*創(chuàng)建當前和下一個月的日期和年份  
  28.     *這里分三種情況,當前月為12月 當前月為11月,當前月為1月  
  29.     */ 
  30.     function getTitleDate(){  
  31.         var odate = new Date();  
  32.         //如果當前月是12月分,那么右邊的月份,就應該是1月份  
  33.           
  34.         //如果當前月是11月分,那么右邊的月份,就應該是1月份  
  35.           
  36.         //如果當前月是1月分,那么左邊的月份,就應該是12月份  
  37.     }  
  38.       
  39.     /*獲取當前月份的一號,是星期幾  
  40.     *首先設置你創(chuàng)建日期對象的年份,月份,和你需要知道的日期數,把這些設置好之后,再使用getDay()方法,就可以獲取你設置日期的,星期數了;  
  41.     */ 
  42.     function getfirstD(m1,y1,m2,y2){  
  43.  
  44.     }  
  45.       
  46.     //根據大小月份取得天數  
  47.     function getTdDay(m1,y1,m2,y2){  
  48.  
  49.     }  
  50.       
  51.     //根據傳入的年份參數,判斷是否是潤年,即能夠被4整除,但不能被100整除,同時滿足時;或者能被400整除;  
  52.     function isRunYear(y){  
  53.  
  54.     }  
  55.           
  56.     //創(chuàng)建HMTL結構  
  57.     function creatHtml(creatbtu){  
  58.             //根據當前月份的一號是星期幾,來生成有幾行存放所有日期  
  59.     }  
  60.           
  61.     //將日期插入到對應的TD當中  
  62.     function insertdate(d,t){  
  63.             //插入到左邊  
  64.  
  65.             //插入到邊  
  66.  
  67.     }  
  68.       
  69.     //插入到DOM  
  70.     function insertHtml(){  
  71.  
  72.     }  
  73.       
  74.     //從DOM中刪除  
  75.     function delHtml(){  
  76.     }  
  77.       
  78.       
  79.     //點擊確定顯示或隱藏日歷  
  80.     $("input[type=button]").toggle(function(){          
  81.             //加這個判斷是防止連續(xù)點擊確定按鈕  
  82.             if(!nowDate.add(nextDate).is(":animated")&&nowDate.add(nextDate).is(":empty")){  
  83.                     //獲得標題上面的年份和月份  
  84.                     getTitleDate();  
  85.                   
  86.                     //獲得左和右的月份的天數  
  87.                     getTdDay(nowTitleDateM,nowTitleDateY,nextTitleDateM,nextTitleDateY);  
  88.                       
  89.                     //獲得左和右的月份一號是星期幾  
  90.                     getfirstD(nowTitleDateM,nowTitleDateY,nextTitleDateM,nextTitleDateY);  
  91.  
  92.                     //創(chuàng)建HTML結構  
  93.                     creatHtml();      
  94.                   
  95.                     //將結構插入到DOM當中  
  96.                     insertHtml();  
  97.                                           
  98.                     //插入日期到左和右的表格TD當中  
  99.                     insertdate(lfday,rfday);  
  100.                       
  101.                     //展開日期  
  102.                     nowDate.add(nextDate).slideDown(200);  
  103.             }          
  104.         },function(){  
  105.             //加這個判斷是防止連續(xù)點擊  
  106.             if(!nowDate.add(nextDate).is(":animated")){  
  107.                 //收起日歷  
  108.                 nowDate.add(nextDate).slideUp(200);  
  109.                 //從DOM中刪除日歷結構  
  110.                 delHtml();  
  111.             }          
  112.         });  
  113. }) 

4.1分析下這代碼結構看注解就可以明白的,以下幾個步驟:

1.獲得當前年份,月份(聯動的“點”)

2.獲得左邊和右邊對應月份的天數;

3.獲得左邊和右邊月分當中一號,分別對應的是星期幾

4.有了以上東西,我們就可以創(chuàng)建HTML結構了(因為要根據月份當中的日期排列,來決定,創(chuàng)建五行,還是六行。來顯示日期)

5.將創(chuàng)建好的結構,插入到DOM當中

6.再將獲得的天數,也就是日期數,插入到對應的表格存放日期的TD當中;

五、總結

1.不用把TR分行處理,只接把tbody里面的td做為一個整體的數組,往里面插入數據;(因為顯示的是數字,正好可以和)

2.“聯動”的規(guī)則

3.像這種類似插入很多數據的東西,要用循解決。

4。像這種數據多的,應該先存放到數組中(因為本例顯示的是數字,所以可以直接用循環(huán)里面的變量,如果是值,要先存放到數組中,根據索引取出來);

DEMO下載

原文鏈接:http://www.cnblogs.com/lufy/archive/2012/05/31/2528419.html

【編輯推薦】

  1. jQuery插件之Ajax自動完成
  2. jQuery基本事件代碼優(yōu)化
  3. 印象深刻的jQuery手風琴效果應用
  4. jQuery可多次使用的星級插件
  5. JQuery插件的開發(fā)真的有那么難嗎
責任編輯:張偉 來源: 船長op的博客
相關推薦

2011-03-11 09:58:02

jQuery

2015-05-27 07:44:34

日歷控件 jQueryCSS3

2014-12-15 10:30:16

jQuery

2016-03-14 10:20:41

日歷動畫Android源碼

2011-01-21 16:34:15

2011-01-21 17:00:49

Thunderbird日歷

2011-01-21 17:51:52

2013-04-08 14:07:28

CSS

2021-09-16 16:08:43

KotlinAndroidAOSP

2011-01-21 17:43:21

Thunderbird日歷

2017-07-28 17:12:52

綠盟科技

2012-08-31 14:00:40

IT運維

2022-02-17 09:50:36

Zabbix聯動登錄LDAP認證

2022-04-18 16:28:30

Linux

2009-08-11 15:46:15

C#日歷控件

2022-05-25 11:24:25

CalendarNutUI移動端

2020-12-17 08:06:33

CSS 日歷界面

2009-12-31 16:50:02

Silverlight

2015-02-11 17:57:36

iOS源碼年日歷

2020-02-20 14:40:53

Vim郵件開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 草久久久 | 雨宫琴音一区二区在线 | 国产精品一区二区福利视频 | 欧美精品一区二区三区四区五区 | 国产黄色麻豆视频 | 99亚洲| 久久久久一区二区三区 | 好姑娘影视在线观看高清 | 久久久女女女女999久久 | 一区二区三区电影网 | h片在线免费看 | 日韩一区欧美一区 | 久久久毛片 | 久久久久久久国产精品 | 亚洲欧美在线视频 | 国产精品亚洲精品久久 | 国产精品99久久久久久www | 一区二区三区中文字幕 | 午夜在线 | 日韩精品久久久久 | 欧美日韩精品一区二区三区四区 | 日韩精品一区二区三区中文在线 | 欧美午夜精品 | 91麻豆精品国产91久久久久久久久 | 午夜伦理影院 | 黄色免费在线网址 | 日韩中文在线 | 免费在线观看一区二区 | 婷婷五月色综合香五月 | 在线一区 | 欧美极品在线观看 | 99久久久久久99国产精品免 | 视频在线观看亚洲 | www.日韩| 亚洲 欧美 日韩在线 | 国产免费一区 | 亚洲网站在线观看 | 久久黄色精品视频 | 亚洲不卡在线观看 | 一区二区免费 | 精品久草 |