搜尋
首頁web前端js教程jQuery 連動日曆實作程式碼_jquery

來看下效果圖
jQuery 連動日曆實作程式碼_jquery
一、先來說下功能:

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、讓左邊兩邊的日曆關聯起來。

  這裡重點是「關聯」:我最近寫了「倒數計時」,再就是這次的"聯動日曆",還有讓我想起了「聯動下拉選單」,例如省份和市的聯動下拉式選單;這些都涉漏到「連動」.
  我總結了一下,就是需要「連動」的東西,必定有一個「點」(先這麼叫吧),其它需要變化,都要和這個點相關聯起來,這樣改變這個點,其它和這個點關聯的東西,也就都會發生改變,也就實現了「連動」這一效果。

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

  這次的日曆連動,裡面的"點",就是當前創建日期物件後,獲得的年,月。根據這個年,月,來去設定右邊,也就是下個月該顯示的東西。那麼只要當前獲取的年,月,有變化,後面的自然也會變化。也就「聯動」了。
  當然裡面還是有點小多細節,處理。

四、上程式碼,太長了,所以只放了結構,裡面的內容可以下載文章最後的DEMO

複製程式碼 程式碼如下:

$(function(){
var nowDate = $(".nowDate"), //左邊的行事曆盒
nextDate = $(".nextDate"), //右邊的行事曆盒子
lstrTd = "", //左日期的行的DOM結構
rstrTd = "", //右日期的行的DOM結構
lrows = 0, //左日期行數
rrows = 0, //右日期行數
iHtmlNow = "", //左邊的日曆結構
iHtmlNext = "", //右邊的日曆的結構
nowTitleDateY = "", //左邊標題年份
nowTitleDateM = "", //左邊顯示的月份
nowlastM = "", //左邊的翻月顯示
nextTitleDateY = "", //右邊標題年份
nextTitleDateM = "", //右邊顯示的月份
nextLastM = "", //右邊的翻月顯示
creatbtu = true, //只建立一次HTML結構的開關
NumDay = 0, //左邊每個月的天數;
rNumDay = 0, //左邊每個月的天數;
lfday = 0, //左邊目前月份的第一天,是星期幾
rfday = 0; / /右邊目前月份的第一天,是星期幾
//建立日期行
function creatTr(l,r){
}
/*建立目前和下個月的日期和年份
*這裡有三種情況,當前月為12月當前月為11月,當前月為1月
*/
function getTitleDate(){
var odate = new Date();
//如果目前月是12月分,那麼右邊的月份,就應該是1月份
//如果當前月是11月分,那麼右邊的月份,就應該是1月份
/ /如果目前月是1月分,那麼左邊的月份,就應該是12月份
}
/*取得目前月份的一號,是星期幾
*先設定你建立日期物件的年份,月份,和你需要知道的日期數,把這些設定好之後,再使用getDay()方法,就可以取得你設定日期的,星期數了;
*/
function getfirstD(m1,y1 ,m2,y2){
}
//依大小月份取得天數
function getTdDay(m1,y1,m2,y2){
}
//依據傳入的年份參數,判斷是否為潤年,即能夠被4整除,但不能被100整除,同時滿足時;或者能被400整除;
function isRunYear(y){
}
//創建HMTL結構
function creatHtml(creatbtu){
//根據當月的一號是星期幾,來產生有幾行存放所有日期
}
//將日期插入對應的TD當中
function insertdate(d,t){
//插入到左邊
//插入到邊
}
//插入DOM
function insertHtml(){
}
//從DOM移除
function delHtml(){
}
//點選確定顯示或隱藏行事曆
$("input[type=button]").toggle(function (){
//加上這個判斷是防止連續點擊確定按鈕
if(!nowDate.add(nextDate).is(":animated")&&nowDate.add(nextDate).is(":empty" )){
//取得標題上面的年份和月份
getTitleDate();
//獲得左和右的月份的天數
getTdDay(nowTitleDateM,nowTitleDateY,nextTitleDateM,nextTitleDateM,nextTitleDateY 🎜>//獲得左和右的月份一號是星期幾
getfirstD(nowTitleDateM,nowTitleDateY,nextTitleDateM,nextTitleDateY);
//創建HTML結構
creatHtt()
//創建HTML結構
creatHtt();結構插入到DOM當中
insertHtml();
//插入日期到左和右的表格TD當中
insertdate(lfday,rfday);
//展開日期
nowDate.add (nextDate).slideDown(200);
}
},function(){
//加這個判斷是防止連續點擊
if(!nowDate.add(nextDate).is(" :animated")){
//收起日曆
nowDate.add(nextDate).slideUp(200);
//從DOM移除行事曆結構
delHtml();
}
});
})

4.1分析下這程式碼結構看註解就可以明白的,以下幾個步驟:
  1.取得當前年份,月份(連結的「點」)
  2.獲得左邊和右邊對應月份的天數;
  3.獲得左邊和右邊月分當中一號,分別對應的是星期幾
  4.有了以上東西,我們就可以建立HTML結構了(因為要依照月份當中的日期排列,來決定,建立五行,還是六行。來顯示日期)
  5.將創建好的結構,插入到DOM當中
  6.再將獲得的天數,也就是日期數,插入到對應的表格存放日期的TD當中;

五、總結

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

  2.「連動」的規則

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

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

線上示範:http://demo.jb51.net/js/2012/mycalendar/
DEMO下載:mycalendar_jb51.rar


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
jquery实现多少秒后隐藏图片jquery实现多少秒后隐藏图片Apr 20, 2022 pm 05:33 PM

实现方法:1、用“$("img").delay(毫秒数).fadeOut()”语句,delay()设置延迟秒数;2、用“setTimeout(function(){ $("img").hide(); },毫秒值);”语句,通过定时器来延迟。

jquery怎么修改min-height样式jquery怎么修改min-height样式Apr 20, 2022 pm 12:19 PM

修改方法:1、用css()设置新样式,语法“$(元素).css("min-height","新值")”;2、用attr(),通过设置style属性来添加新样式,语法“$(元素).attr("style","min-height:新值")”。

axios与jquery的区别是什么axios与jquery的区别是什么Apr 20, 2022 pm 06:18 PM

区别:1、axios是一个异步请求框架,用于封装底层的XMLHttpRequest,而jquery是一个JavaScript库,只是顺便封装了dom操作;2、axios是基于承诺对象的,可以用承诺对象中的方法,而jquery不基于承诺对象。

jquery怎么在body中增加元素jquery怎么在body中增加元素Apr 22, 2022 am 11:13 AM

增加元素的方法:1、用append(),语法“$("body").append(新元素)”,可向body内部的末尾处增加元素;2、用prepend(),语法“$("body").prepend(新元素)”,可向body内部的开始处增加元素。

jquery中apply()方法怎么用jquery中apply()方法怎么用Apr 24, 2022 pm 05:35 PM

在jquery中,apply()方法用于改变this指向,使用另一个对象替换当前对象,是应用某一对象的一个方法,语法为“apply(thisobj,[argarray])”;参数argarray表示的是以数组的形式进行传递。

jquery怎么删除div内所有子元素jquery怎么删除div内所有子元素Apr 21, 2022 pm 07:08 PM

删除方法:1、用empty(),语法“$("div").empty();”,可删除所有子节点和内容;2、用children()和remove(),语法“$("div").children().remove();”,只删除子元素,不删除内容。

jquery怎么去掉只读属性jquery怎么去掉只读属性Apr 20, 2022 pm 07:55 PM

去掉方法:1、用“$(selector).removeAttr("readonly")”语句删除readonly属性;2、用“$(selector).attr("readonly",false)”将readonly属性的值设置为false。

jquery on()有几个参数jquery on()有几个参数Apr 21, 2022 am 11:29 AM

on()方法有4个参数:1、第一个参数不可省略,规定要从被选元素添加的一个或多个事件或命名空间;2、第二个参数可省略,规定元素的事件处理程序;3、第三个参数可省略,规定传递到函数的额外数据;4、第四个参数可省略,规定当事件发生时运行的函数。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器