(Demo分享)利用JavaScript(JS)做一個可輸入分鍾的倒計時鍾功能


利用JavaScript(JS)實現一個可輸入分鍾的倒計時鍾功能
本文章為 Tz張無忌 原創文章,轉載請注明來源,謝謝合作!


網絡各種利用JavaScript做倒計時的Demo對新手很不友好,這里我親手只做了一個案例,希望能幫助到讀者們。

本Demo實現了輸入數字可以開啟倒計時功能,可以隨時暫停、重置倒計時,並且對輸入非數字類型其他字符進行了過濾以及提示!

整體思路:

1.利用JS獲取一次當前時間,把用戶在input輸入框的內容,轉化為我們所需要的數字

2.然后利用JavaScript的時間戳`get.Time()`,把用戶輸入的數據+我們第一次獲取的時間,然后減去我的第二次獲得的時間戳(不斷刷新的時間戳),就可以得到我們所需要的倒計時秒數。

3.將我們所需要的信息輸出


##效果圖如下:

##Demo的代碼如下:

詳細信息請看Demo中注釋,♥本Demo中加入了隱藏小彩蛋♥,如有疑問,可以在評論處留言,會在第一時間進行回復。

<!doctype html>
<html >
<head>
    <meta charset="UTF-8">
    <title>專業的在線倒計時</title>
    <style>
        /*以下為CSS樣式設置*/
        /*為了代碼簡潔使用通配符,實際開發不建議使用*/
        *{
            margin: 0;
            padding: 0;
        }
        body {
            background-image:linear-gradient(to right, #eea2a2 0%, #bbc1bf 19%, #57c6e1 42%, #b49fda 79%, #7ac5d8 100%);
        }
        .ofixed{
            position: fixed;
            width: 30px;
            height: 30px;
            background-color: #00ff0f;
            top: 30%;
            opacity: 0.1;
            border-radius: 14px;
            text-align: center;
            line-height: 30px;
            transition: 1s;
            font-size: 12px;

        }
        .ofixed div{
            display: none;
        }
        .ofixed:hover{
            opacity: 0.8;
            width: 180px;
        }
        .ofixed:hover div{
            display: block;
        }
        .content {
            width: 450px;
            height: 100px;
            margin: 40px auto 0;
            display: flex;
            justify-content: space-between;
        }
        .button_content {
            width: 450px;
            height: 100px;
            margin: 10px auto;
            display: flex;
            justify-content: space-between;
        }
        input{
            width: 80px;
            height: 60px;
            /*border:1px solid blue;*/
            border-radius: 5px;
            border:none;
            opacity: 0.7;
            font-size: 30px;
            color: deepskyblue;
            text-align: center;

        }
        button {
            width: 100px;
            height: 40px;
            font-size: 20px;
            font-weight: bold;
            color: #4caf50;
            border: none;
            border-radius: 6px;
            position: relative;
        }
        button div{
            position: absolute;
            top: 0;
            font: 0;
            width: 0px;
            height: 40px;
            background-color:#2b74e2;
            transition: 0.4s;
            opacity: 0.5;
        }
        button:hover div{
            width: 100px;
        }
        span {
            font-size: 40px;
            position: relative;
            top: 3px;
        }
        #d1 {
            width: 900px;
            height: 300px;
            background-color: blueviolet;
            border-radius: 20px;
            /*text-align: center;*/
            font-weight: bold;
            font-size: 80px;
            line-height: 300px;
            color:black;
            margin: 0 auto ;
            text-align: center;
        }
        #btn3 {
            color: black;
        }
    </style>
</head>

<body>
    <div class="ofixed">
        <div>這是一個隱藏的彩蛋</div>
    </div>
    <div class="content">

        <input type="text" id="newhours" maxlength="2">
        <span>時</span>
        <input type="text" id="newminutes" maxlength="2">
        <span>分</span>
        <input type="text" id="newseconds" maxlength="2">
        <span>秒</span>
    </div>
    <div class="button_content">
        <button id="btn1">開&emsp;始<div></div></button>
        <button id="btn2">暫&emsp;停<div></div></button>
        <button id="btn3">重&emsp;置<div></div></button>
    </div>

    <div id="d1">
    </div>
</body>
    <script>
        // 獲取一次當前系統時間
        var current_time =new Date();
        function fn1(){
            // 首先獲取input輸入框的的內容
            var ohours = document.getElementById("newhours").value;
            var ominutes = document.getElementById("newminutes").value;
            var oseconds = document.getElementById("newseconds").value;
            // input輸入的內容是字符串,把它們相加成時間總的秒數
            // 把小時轉換成相應的毫秒數
            var ohours_milli = ohours*60*60*1000;
            // 把輸入的分鍾轉換成相應的毫秒數
            var ominutes_millo = ominutes*60*1000;
            // 把輸入的轉換成相應的毫秒數
            var oseconds_milli = oseconds*1000
            // 累計相加得出用戶輸入的所有毫秒數
            var add_time = ohours_milli+ominutes_millo+oseconds_milli;
           // 通過計時器循環獲得新的系統時間
           var reset_time = new Date();
           // current_time獲取的系統時間加上用戶輸入的時間 減去當前系統時間,得到倒計時的效果
           var time = current_time.getTime() + add_time - reset_time.getTime();
            console.log(time)
           // 通過上面time獲取的倒計時毫秒數,分別除以相對數字得到,分、秒以及毫秒
           var  hours =Math.floor(time/1000/60/60%24);
           var minute =Math.floor(time/1000/60%60);
           var seconds = Math.floor(time/1000%60 );
           var milliseconds = Math.floor( time % 60);
           // 獲取頁面DIv
           var odiv = document.getElementById("d1");
            // 小於10在前面加0
            if(milliseconds<10){
                milliseconds = "0" + milliseconds;
            }
            if(seconds<10){
                seconds = "0" + seconds;
            }
            if(minute<10){
                minute = "0" + minute;
            }
            if(hours<10){
                hours = "0" + hours;
            }
           // 將得到結果輸入至頁面
           odiv.innerHTML = (hours + "&nbsp;:&nbsp;" + minute +"&nbsp;:&nbsp;" +seconds + "&nbsp;:&nbsp;" +milliseconds);

           // 一些判斷條件
           //  輸入的小時不能大於24小時,24小時等於86400000毫秒
            if(time > 86400000){
                odiv.innerHTML = ("&hearts;最大小時數為24");
                odiv.style.color = "#ffeb3b";
                clearInterval(set_reset);
            }
           //  當倒計時為0的時候停止計時器
           if( time < 0){
               odiv.innerHTML = ("&hearts;倒計時結束&hearts;");
               odiv.style.color = "red";
               clearInterval(set_reset);
           }
           // 輸入非數字提示
            if(isNaN(time)){
                odiv.innerHTML = ("&hearts;請輸入正確的數字");
                odiv.style.color = "#ffeb3b";
                clearInterval(set_reset);
            }
            // 未輸入時間提示
            if(ohours==""&& ominutes==""&&oseconds==""){
                odiv.innerHTML = ("&hearts;請輸入時間,重置再試");
                obtn1.innerHTML = "未輸時間";
                obtn2.innerHTML = "未輸時間";
                obtn1.disabled =true;
                obtn2.disabled =true;
                odiv.style.color = "#ffeb3b";
                clearInterval(set_reset);
            }
        }
        // 獲取按鈕
        var obtn1 = document.getElementById("btn1");
        var obtn2 = document.getElementById("btn2");
        var obtn3 = document.getElementById("btn3");
        // 鼠標點擊執行

        obtn1.onclick = function () {
            obtn1.innerHTML = "正在執行";
            obtn2.innerHTML = "點擊暫停";
            set_reset = setInterval("fn1()",100     );
            console.log(setInterval);
            // 讓input的變為只讀
            document.getElementById("newhours").disabled="turn";
            document.getElementById("newminutes").disabled="turn";
            document.getElementById("newseconds").disabled="turn";
        }
        obtn2.onclick = function () {
            clearInterval(set_reset);
            obtn1.innerHTML = "點擊繼續";
            obtn2.innerHTML = "已&ensp;暫&ensp;停"

        }
        obtn3.onclick = function () {
            // 重新加載當前頁面
            location.reload()
        }
    </script>
</html>

 

 

如有疑問,可以在評論處留言,會在第一時間進行回復。筆芯~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM