JavaScript輸出所選擇起始與結(jié)束日期的方法
本文實(shí)例講述了JavaScript輸出所選擇起始與結(jié)束日期的方法。分享給大家供大家參考,具體如下:
一直在用公司的報(bào)表工具做報(bào)表,報(bào)表里最常用的查詢條件就是開始日期、結(jié)束日期。
自己會(huì)一點(diǎn)html和js,于是就想用html+JavaScript來實(shí)現(xiàn)選擇查詢?nèi)掌?,以及做出相?yīng)。
實(shí)現(xiàn)之后,覺得這個(gè)還是比較簡單的,N年前學(xué)的html和javascript,總算是派上用場了,人人都可以開發(fā)網(wǎng)頁。
這個(gè)代碼要在谷歌的chrome瀏覽器中,日期選擇才能有效果(代碼中的input元素Type屬性值date為HTML5元素,需要支持HTML5的瀏覽器運(yùn)行)
代碼如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="charset=gbk"></meta> <script type="text/javascript"> function query() { var xx = document.getElementsByName("day"); var s=""; for (var i=0;i<xx.length ;i++ ) { if(xx[i].tagName == 'TD') s= s + xx[i].innerText; //alert(xx[i].innerText); else { if(xx[i].tagName == 'INPUT') { s += xx[i].value; //由于沒有選擇日期,默認(rèn)值是空串 //if(xx[i].value == null || xx[i].value == 'Undefined' || xx[i].value == "") // alert(xx[i].value); } } if( i % 2 == 1) s+=";"; } var yy = document.getElementById("sp"); yy.innerHTML = s; //document.write("abcdefg<hr>"); //alert(xx.length); } </script> </head> <body> <table> <tr> <td name="day">開始日期: <input type="date" name="day" /></td> <td name="day">結(jié)束日期:<input type="date" name="day" /></td> <td><input type="button" value="查 詢" onclick="query()" /> </td> </tr> <tr> <td><span id="sp"></span></td> </tr> </table> </body> </html>
寫完這個(gè)代碼后,第一個(gè)感覺是javascript是一個(gè)區(qū)分大小寫的編程語言,在我印象中好像就VB、SQL是不區(qū)分大小寫的,而其他的c#、java、python都是區(qū)分大小寫的,今天在寫js代碼時(shí),很大一個(gè)坑就是定義的變量是小寫s,但是寫出大寫的S了,過了5分鐘才發(fā)現(xiàn)總是報(bào)錯(cuò):變量沒有定義。。。
運(yùn)行效果如下:
通過這個(gè)例子,我感覺自己對(duì)js 、html更加了解:
1、日期選擇的輸入,這里通過input標(biāo)簽的 type=date來實(shí)現(xiàn)。
2、當(dāng)選擇日期之后,點(diǎn)擊按鈕,這個(gè)按鈕上的文字,是通過 input type=button的value屬性來實(shí)現(xiàn)。
3、點(diǎn)擊按鈕之后,怎么響應(yīng)?寫上onclick數(shù)學(xué)=“處理函數(shù)” 就可以
4、這個(gè)onclick事件的響應(yīng)函數(shù)要怎么寫?這里點(diǎn)擊之后,會(huì)輸出選擇的日期。
5、如何獲取到選擇的日期呢?這里通過document對(duì)象的 getElementsByName函數(shù)來找標(biāo)簽屬性name="day"的標(biāo)簽。
6、找到這些標(biāo)簽之后,接下來判斷上又遇到了麻煩。對(duì)于標(biāo)簽內(nèi)容可以用 .innerText(只是文本而不包含其他標(biāo)簽),而對(duì)于網(wǎng)頁的內(nèi)容則是.innerHTML。另外,對(duì)于選擇的日期值,可以用.value屬性 來取。
7、接下來的一個(gè)問題是,既要取標(biāo)簽內(nèi)容,又要取所選擇的日期值,如何區(qū)分呢?
可以用.tagName屬性來判斷,如果是INPUT,那么用.value取值,如果是TD,那么用.innerText。
8、假設(shè)沒有選擇日期,那么獲取到的value是什么呢?實(shí)驗(yàn)證明返回了空串,而不是null。如果變量s初始化,那么s的值就是Undefined。
9、字符串的賦值可以用+=運(yùn)算符,那么代碼s=s+xx ,可以改成s+=xx,這種寫法普遍的寫法,現(xiàn)在連sql語句也是支持的
10、對(duì)于代碼中的if else語句,著實(shí)覺得寫著不方便,盡然沒有elseif或者elif,而是一定要else,然后再寫if -else。。。
11、i%2 == 1這個(gè)是因?yàn)閕是0、1、2、3,當(dāng)?shù)搅薸=1時(shí),才在變量s中加上分號(hào),效果:
開始日期: 2017-01-03;結(jié)束日期:2017-01-19;
12、輸出結(jié)果放哪里?這里在報(bào)表中增加了1行:span標(biāo)簽,name=sp,一開始不會(huì)顯示出來。當(dāng)然,要把輸出作為這個(gè)標(biāo)簽的內(nèi)容,首先要找到標(biāo)簽,這里通過getElementById來找到標(biāo)簽,然后把輸出結(jié)果放到.innerHTML中就可以了。
PS:這里再為大家推薦幾款比較實(shí)用的天數(shù)計(jì)算在線工具供大家使用:
在線日期/天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在線日期計(jì)算器/相差天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/datecalc
在線日期天數(shù)差計(jì)算器:
http://tools.jb51.net/jisuanqi/onlinedatejsq
在線天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/datejsq
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript時(shí)間與日期操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
javascript驗(yàn)證香港身份證的格式或真實(shí)性
本文分享了利用javascript驗(yàn)證香港身份證的格式或真實(shí)性的代碼,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02js調(diào)用后臺(tái)servlet方法實(shí)例
今天做歷史記錄查詢功能,遇到了前后臺(tái)方法互相調(diào)用的問題,研究了一下,把成功經(jīng)驗(yàn)記錄一二。2013-06-06使用phantomjs進(jìn)行網(wǎng)頁抓取的實(shí)現(xiàn)代碼
這篇文章主要介紹了使用phantomjs進(jìn)行網(wǎng)頁抓取的實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-09-09實(shí)例詳解JavaScript中setTimeout函數(shù)的執(zhí)行順序
關(guān)于javascript的運(yùn)行機(jī)制大家都應(yīng)該有所了解了吧,其實(shí)javascript是一個(gè)單線程的機(jī)制,但是因?yàn)殛?duì)列的關(guān)系它的表現(xiàn)會(huì)讓我們感覺是一個(gè)多線程的錯(cuò)覺。下面這篇文章通過實(shí)例主要給大家介紹了關(guān)于JavaScript中setTimeout函數(shù)執(zhí)行順序的相關(guān)資料,需要的朋友可以參考下。2017-07-07JavaScript Window 打開新窗口(window.location.href、windo
本文主要介紹了JavaScript Window 打開新窗口的三種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05localstorage實(shí)現(xiàn)帶過期時(shí)間的緩存功能
這篇文章主要介紹了localstorage實(shí)現(xiàn)帶過期時(shí)間的緩存功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06詳解JavaScript的閉包、IIFE、apply、函數(shù)與對(duì)象
本文主要對(duì)JavaScript的閉包、IIFE、apply、函數(shù)與對(duì)象進(jìn)行詳細(xì)介紹。有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12Javascript無參數(shù)和有參數(shù)類繼承問題解決方法
這篇文章主要介紹了Javascript無參數(shù)和有參數(shù)類繼承問題解決方法,本文講解了無參數(shù)類繼承的問題和有參類繼承的問題,并給出了解決方案,需要的朋友可以參考下2015-03-03