国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端練手小項目--自定義時間(html+css+js)

這篇具有很好參考價值的文章主要介紹了前端練手小項目--自定義時間(html+css+js)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

自定義時間

寫文章的因

關(guān)于要寫這篇文章的原因

  • 是記錄在工作上遇到的困難需求,
  • 是希望能給大家提供一些解決問題的思路

接下來我描述這個需求的多樣性,難點在哪。

  • 勾選勾選框開始時間與結(jié)束時間默認顯示昨天與今天。
  • 取消勾選框開始時間與結(jié)束時間清空。
  • 選擇開始時間,勾選框勾選,結(jié)束時間為今天。
    在用戶點擊 開始時間大于或者等于結(jié)束時間時,
    提示錯誤信息,開始時間清空,
    選擇結(jié)束時間時,小于或者等于開始時間,
    顯示報錯,結(jié)束時間清空。
  • 選擇結(jié)束時間,勾選框勾選,開始時間
    為所選結(jié)束時間的昨天。
    在用戶點擊結(jié)束時間小于或者等于結(jié)束時間時,
    提示錯誤信息,結(jié)束時間清空,
    選擇開始時間時,大于或者等于開始時間,
    顯示報錯,開始時間清空。
  • 其次在每次選擇時間的時候都要計算出開始時間與結(jié)束時間。
  • 用戶不能選擇限制范圍之外的時間

前端練手小項目--自定義時間(html+css+js),需求吃吃吃,前端練手項目,javascript,html,css

1.效果演示

前端練手小項目--自定義時間(html+css+js),需求吃吃吃,前端練手項目,javascript,html,css

2.思路解析

2.1編寫html

該部分比較簡單,就一個錯誤提示div
一段文字,一個勾選框,兩個時間選擇框

<div id="errorMsg" style="color:red;margin-top:10px;margin-bottom:20px"></div>
    <div>
        <label for="select_time">自定義文件修改時間:</label>
        <input type="checkbox" name="select_time" id='selectTime' 
        	onchange="changeStatus(event)" id="selectTime">
        <input type="date"  id='startTime' ref="startTime" 
        	onchange="getstartTime(event)" max=""> ---
        <input type="date" ref="endTime" id="endTime" 
        	onchange="getEndTime(event)" max="">
    </div>

2.2編寫自動得到當(dāng)前時間的函數(shù)

這里的難點是在日期框顯示‘yyyy-mm-dd’,
就需要對獲取到的值進行處理,

 function GetDateStr(AddDayCount) { 
     var dd = new Date(); 
         dd.setDate(dd.getDate()+AddDayCount);//獲取AddDayCount天后的日期 
     var y = dd.getFullYear(); 
     var m = (dd.getMonth()+1);//獲取當(dāng)前月份的日期 
     var d = dd.getDate(); 
     if(m>=10&&m>=10){
          return y+"-"+m+"-"+d; 
      }else if(m<10&&d>=10){
          return y+"-"+'0'+m+"-"+d; 
      }else if(m<10&&d<10){
          return y+"-"+'0'+m+"-"+'0'+d; 
          } 
    }

2.3限制用戶選擇日期

該功能通過給input添加一個max屬性即可,
但是該max屬性值必須是max='yyyy-mm-dd’的形式。

window.onload=function(){
    document.getElementById('startTime').setAttribute('max',this.GetDateStr(-1))
    document.getElementById('endTime').setAttribute('max',this.GetDateStr(0))    
}

2.4關(guān)于時間的計算

時間的計算問題,因為我們通過Date.parse()
格式化時間得到的時間是東八區(qū)的時間,要想得到
零點的時間需要減去8個小時。
開始時間等于start=Date.parse(‘yyyy-mm-dd’)/1000-83600
結(jié)束時間等于end=Date.parse(‘yyyy-mm-dd’)/1000+16
3600
因為我們需要的時間是昨天的零點,以及今天的24點

  //得到時間為s
 var  modification_time_start=null,
      modification_time_end=null,
  modification_time_start=Date.parse(this.GetDateStr(-1)) / 1000-8*3600
  modification_time_end=Date.parse(this.GetDateStr(0)) / 1000+16*3600  

2.5用戶選擇開始時間

當(dāng)用戶選擇開始時間,結(jié)束時間調(diào)用 GetDateStr()并賦值。
勾選框勾選,給該元素設(shè)置屬性checked為true。
然后就是對開始時間與結(jié)束時間的判斷來決定
是否顯示錯誤提示,以及清空開始框。

function getstartTime() {
    $('#selectTime').attr('checked',true)//給勾選框添加屬性,讓其處于勾選狀態(tài)
    $('#selectTime').prop('checked',true)
    modification_time_start = Date.parse($('#startTime').val())/1000-8*3600
    // 用戶只選中開始時間,結(jié)束時間默認為當(dāng)前時間。并重新賦值
    if(count||modification_time_end===null){
        document.getElementById('endTime').value=this.GetDateStr(0)
        count=!count
      }
    if(document.getElementById('startTime').value ==='' 
    		&& document.getElementById('endTime').value===''){
           $('#selectTime').attr('checked',false)
            $('#selectTime').prop('checked',false)
       }
    // document.getElementById('endTime').value=this.GetDateStr(0)
    document.getElementById('startTime').value=$('#startTime').val()
    modification_time_end= Date.parse($('#endTime').val())/1000+16*3600
    if(modification_time_end<=modification_time_start || 
    		$('#endTime').val()<=$('#startTime').val()){
       //alert('所選時間大于結(jié)束時間,請重新選擇時間')
       document.getElementById('errorMsg').innerText='所選時間大于或等于結(jié)束時間,請重新選擇時間'
       document.getElementById('startTime').value=''
       document.getElementById('endTime').value=$('#endTime').val()
     }else{
         document.getElementById('errorMsg').innerText=''
         }
        console.log('開始時間===》',modification_time_start,'結(jié)束時間===》', modification_time_end)
    }

2.6用戶選擇開始時間

當(dāng)用戶選擇結(jié)束時間,結(jié)束時間調(diào)用 GetDateStr()并賦值。
勾選框勾選,給該元素設(shè)置屬性checked為true。
然后就是對開始時間與結(jié)束時間的判斷來決定
是否顯示錯誤提示,以及清空結(jié)束時間框。

 function getEndTime() {
                $('#selectTime').attr('checked',true)
                $('#selectTime').prop('checked',true)      
                modification_time_end = Date.parse($('#endTime').val())/1000+16*3600
                document.getElementById('endTime').value=$('#endTime').val()
                modification_time_start= Date.parse($('#startTime').val())/1000-8*3600
            if(document.getElementById('startTime').value ==='' && document.getElementById('endTime').value===''){
                $('#selectTime').attr('checked',false)
                $('#selectTime').prop('checked',false)
        }
                //當(dāng)用戶只選中最后時間時,開始時間應(yīng)該有個默認值。該最后時間的前一天,重新給開始時間賦值 
             if(modification_time_end<=modification_time_start || $('#endTime').val()<=$('#startTime').val()){
                        //alert('所選時間小于開始時間,請重新選擇時間')
                        document.getElementById('errorMsg').innerText='所選時間小于或等于開始時間,請重新選擇時間'
                        document.getElementById('endTime').value=''
                        document.getElementById('startTime').value=$('#startTime').val()
             }else{
                    document.getElementById('errorMsg').innerText=''
                }
             if(count){
                    let date=new Date(Date.parse($('#endTime').val())-24*3600*1000)
                    Y = date.getFullYear() + '-'
                    M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'
                    D = (date.getDate()< 10 ? '0'+date.getDate() : date.getDate())
                    document.getElementById('startTime').value=Y+M+D
                    modification_time_start=Date.parse(Y+M+D)/1000-8*3600
                    count=!count
            }
            console.log('開始時間===》',modification_time_start,'結(jié)束時間===》', modification_time_end)
        }

2.7總結(jié)

在該需求中,我們學(xué)到了那些內(nèi)容

  • 計算時間的準(zhǔn)確性(開始時間的0點,結(jié)束時間的24點)以及關(guān)于使用Date.parse(‘yyyy-mm-dd’)的值為東八區(qū)的值。
    +怎么得到當(dāng)前時間,以及怎么將該值賦值到日期框中document.getElementById(‘startTime’).value=‘yyyy-mm-dd’,
  • 通過jquery改變勾選框的勾選狀態(tài)$(’#selectTime’).attr(‘checked’,true) $(’#selectTime’).prop(‘checked’,true)

3.完整代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></script>
</head>
<body>
    <div id="errorMsg" style="color:red;margin-top:10px;margin-bottom:20px"></div>
    <div>
        <label for="select_time">自定義文件修改時間:</label>
        <input type="checkbox" name="select_time" id='selectTime' onchange="changeStatus(event)" id="selectTime">
        <input type="date"  id='startTime' ref="startTime" onchange="getstartTime(event)" max=""> ---
        <input type="date" ref="endTime" id="endTime" onchange="getEndTime(event)" max="">
    </div>
    <script>
         var  modification_time_start=null,
         modification_time_end=null,
         count=true

    function GetDateStr(AddDayCount) { 
                var dd = new Date(); 
                dd.setDate(dd.getDate()+AddDayCount);//獲取AddDayCount天后的日期 
                var y = dd.getFullYear(); 
                var m = (dd.getMonth()+1);//獲取當(dāng)前月份的日期 
                var d = dd.getDate(); 
                if(m>=10&&m>=10){
                    return y+"-"+m+"-"+d; 
                }else if(m<10&&d>=10){
                    return y+"-"+'0'+m+"-"+d; 
                }else if(m<10&&d<10){
                    return y+"-"+'0'+m+"-"+'0'+d; 
                } 
           }
    window.onload=function(){
        document.getElementById('startTime').setAttribute('max',this.GetDateStr(-1))
        document.getElementById('endTime').setAttribute('max',this.GetDateStr(0))    
    }
    function changeStatus(event) {
                if (event.target.checked) {
                    modification_time_start=Date.parse(this.GetDateStr(-1)) / 1000-8*3600
                    modification_time_end=Date.parse(this.GetDateStr(0)) / 1000+16*3600
                    document.getElementById('startTime').value = this.GetDateStr(-1)
                    document.getElementById('endTime').value = this.GetDateStr(0)
                    console.log('開始時間===》',modification_time_start,'結(jié)束時間===》', modification_time_end)
                }else{
                    document.getElementById('startTime').value =null
                    document.getElementById('endTime').value=null
                    modification_time_end=null
                    modification_time_start=null
                }
            }
    function getstartTime() {
                $('#selectTime').attr('checked',true)
                $('#selectTime').prop('checked',true)
                modification_time_start = Date.parse($('#startTime').val())/1000-8*3600
                // 用戶只選中開始時間,結(jié)束時間默認為當(dāng)前時間。并重新賦值
                 if(count||modification_time_end===null){
                    document.getElementById('endTime').value=this.GetDateStr(0)
                    count=!count
                }
                if(document.getElementById('startTime').value ==='' && document.getElementById('endTime').value===''){
                    $('#selectTime').attr('checked',false)
                     $('#selectTime').prop('checked',false)
                }
                // document.getElementById('endTime').value=this.GetDateStr(0)
                document.getElementById('startTime').value=$('#startTime').val()
                modification_time_end= Date.parse($('#endTime').val())/1000+16*3600
                if(modification_time_end<=modification_time_start || $('#endTime').val()<=$('#startTime').val()){
                        //alert('所選時間大于結(jié)束時間,請重新選擇時間')
                        document.getElementById('errorMsg').innerText='所選時間大于或等于結(jié)束時間,請重新選擇時間'
                        document.getElementById('startTime').value=''
                        document.getElementById('endTime').value=$('#endTime').val()
                }else{
                    document.getElementById('errorMsg').innerText=''
                }
                console.log('開始時間===》',modification_time_start,'結(jié)束時間===》', modification_time_end)
            }
    function getEndTime() {
                $('#selectTime').attr('checked',true)
                $('#selectTime').prop('checked',true)      
                modification_time_end = Date.parse($('#endTime').val())/1000+16*3600
                document.getElementById('endTime').value=$('#endTime').val()
                modification_time_start= Date.parse($('#startTime').val())/1000-8*3600
            if(document.getElementById('startTime').value ==='' && document.getElementById('endTime').value===''){
                $('#selectTime').attr('checked',false)
                $('#selectTime').prop('checked',false)
        }
                //當(dāng)用戶只選中最后時間時,開始時間應(yīng)該有個默認值。該最后時間的前一天,重新給開始時間賦值 
             if(modification_time_end<=modification_time_start || $('#endTime').val()<=$('#startTime').val()){
                        //alert('所選時間小于開始時間,請重新選擇時間')
                        document.getElementById('errorMsg').innerText='所選時間小于或等于開始時間,請重新選擇時間'
                        document.getElementById('endTime').value=''
                        document.getElementById('startTime').value=$('#startTime').val()
             }else{
                    document.getElementById('errorMsg').innerText=''
                }
             if(count){
                    let date=new Date(Date.parse($('#endTime').val())-24*3600*1000)
                    Y = date.getFullYear() + '-'
                    M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'
                    D = (date.getDate()< 10 ? '0'+date.getDate() : date.getDate())
                    document.getElementById('startTime').value=Y+M+D
                    modification_time_start=Date.parse(Y+M+D)/1000-8*3600
                    count=!count
            }
            console.log('開始時間===》',modification_time_start,'結(jié)束時間===》', modification_time_end)
        }
    </script>
</body>
</html>

好了這次的文章就到這了
如果覺得還不錯的話,幫忙點個關(guān)注吧
希望能給博主點贊哎??,評論??,收藏??三連一波加粗樣式文章來源地址http://www.zghlxwxcb.cn/news/detail-654107.html

到了這里,關(guān)于前端練手小項目--自定義時間(html+css+js)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 截圖轉(zhuǎn)HTML代碼,支持預(yù)覽,前端不用浪費時間寫html和css了

    截圖轉(zhuǎn)HTML代碼,支持預(yù)覽,前端不用浪費時間寫html和css了

    試用地址:https://picoapps.xyz/free-tools/screenshot-to-code 這個簡單的應(yīng)用可以將截圖轉(zhuǎn)換為HTML/Tailwind CSS代碼。它使用GPT-4 Vision來生成代碼,并使用DALL-E 3來生成類似的圖像。現(xiàn)在你也可以輸入一個URL來克隆一個現(xiàn)有的網(wǎng)站! NYTimes Original Replica Instagram頁面(沒有泰勒·斯威夫特的照

    2024年02月04日
    瀏覽(16)
  • 前端基礎(chǔ)面試題(HTML,CSS,JS)

    前端基礎(chǔ)面試題(HTML,CSS,JS)

    前后端面試題庫 (面試必備) 推薦:★★★★★ 地址:前端面試題庫??web前端面試題庫 VS java后端面試題庫大全 代碼結(jié)構(gòu): ?使頁面在沒有css的情況下,也能夠呈現(xiàn)出好的內(nèi)容結(jié)構(gòu) 有利于SEO: ?爬蟲根據(jù)標(biāo)簽來分配的權(quán)重,因此可以和搜索引擎建立良好的溝通,幫助爬蟲抓

    2024年02月09日
    瀏覽(31)
  • 前端 :用HTML , CSS ,JS 做一個秒表
  • 前端HTML、CSS、JS、VUE3 匯總

    前端HTML、CSS、JS、VUE3 匯總

    學(xué)習(xí)https://developer.mozilla.org/zh-CN/docs/Learn/CSS 提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加 使用VS Code運行前端代碼 在VS Code上安裝前端插件 正在更新中~ ? 提示:這里可以添加本文要記錄的大概內(nèi)容: 學(xué)習(xí)路線 知識定位 HTML基礎(chǔ) 標(biāo)簽、表格、表單、

    2024年02月13日
    瀏覽(69)
  • 常見前端基礎(chǔ)面試題(HTML,CSS,JS)(三)

    常見前端基礎(chǔ)面試題(HTML,CSS,JS)(三)

    ? 類型轉(zhuǎn)換可以分為兩種, 隱性轉(zhuǎn)換 和 顯性轉(zhuǎn)換 主要分為三大類:數(shù)值類型、字符串類型、布爾類型 三大類的原始類型值的轉(zhuǎn)換規(guī)則我就不一一列舉了 數(shù)值類型(引用類型轉(zhuǎn)換) 字符串類型(引用類型轉(zhuǎn)換) 類型 轉(zhuǎn)換前 轉(zhuǎn)換后 number 4 4 string \\\"1\\\" 1 string \\\"\\\" 0 boolean true 1 b

    2024年02月12日
    瀏覽(31)
  • 前端簡單動態(tài)圣誕樹動畫(HTML、js、css)

    前端簡單動態(tài)圣誕樹動畫(HTML、js、css)

    效果展示: ?注釋: 整體圣誕樹分為3個部分,書的主干、粒子特效、樹上的卡片 樹上的卡片(重點):每一張卡片上都有一個名字,代表圣誕樹的葉子,后面可以根據(jù)自己需求更改,比如全部改成喜歡人的名字,在JS代碼的第五行內(nèi)更改內(nèi)容 樹的動態(tài)旋轉(zhuǎn)通過js實現(xiàn)、主干是

    2024年02月04日
    瀏覽(20)
  • ChatGPT給出的前端面試考點(html+css+JS)

    ChatGPT給出的前端面試考點(html+css+JS)

    HTML HTML是什么,它的主要作用是什么? 什么是DOCTYPE,為什么在HTML文檔中使用它? HTML5相對于之前的HTML版本有哪些主要的新特性? 解釋語義化HTML的概念。為什么要使用語義化標(biāo)簽? 如何在HTML中嵌入JavaScript和CSS? 什么是表單,如何在HTML中創(chuàng)建一個表單? 什么是響應(yīng)式圖片

    2024年01月21日
    瀏覽(29)
  • html + css + js簡單的項目

    html + css + js簡單的項目

    想看更多可以私信我,要做畢設(shè)等網(wǎng)站也可以來找我

    2024年01月19日
    瀏覽(18)
  • 前端:運用html+css+js模仿京東上商品圖片區(qū)域放大特效

    前端:運用html+css+js模仿京東上商品圖片區(qū)域放大特效

    1. 前言 最近在網(wǎng)頁端瀏覽京東上的商品時,覺得上面的那張gif圖片上實現(xiàn)的特效不錯,于是自己打算使用html+css+js技術(shù)來實現(xiàn)一下上述特效效果,我的實效果如下: 2. 前端界面 主要使用到浮動、絕對定位、相對定位等知識,不了解這部分知識點的讀者可以先去了解了解,再

    2024年02月16日
    瀏覽(40)
  • 前端 : 用html ,css,js寫一個你畫我猜的游戲

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包