麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JavaScript > 正文

javascript實(shí)現(xiàn)下班倒計(jì)時(shí)效果的方法(可桌面通知)

2019-11-20 12:03:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了javascript實(shí)現(xiàn)下班倒計(jì)時(shí)效果的方法。分享給大家供大家參考。具體如下:

周末了,搞個(gè)下班倒計(jì)時(shí),娛樂(lè)下。

確保下面三點(diǎn):

1、非IE瀏覽器,較高Chrome版本,已開(kāi)啟HTML5桌面通知。具體設(shè)置見(jiàn)下面截圖
2、將這個(gè)HTML放到本地Web服務(wù)器上測(cè)試,直接雙擊運(yùn)行無(wú)法彈出桌面通知

順帶提下,這個(gè)程序很容易擴(kuò)展成定時(shí)通知。

做這個(gè)東西的過(guò)程有兩點(diǎn)比較糾結(jié),總結(jié)下:

1、parseInt("09")返回的是0。正確做法是parseInt("09", 10),顯式指定基數(shù)為十進(jìn)制
2、false與"false",這個(gè)也有點(diǎn)小糾結(jié),開(kāi)始我這樣
$("#minute").attr("readonly", "false");
但達(dá)不到效果,因?yàn)閷?shí)際上readonly屬性只有兩個(gè)值true或false,所以如果我設(shè)置它的值為"false",那么相當(dāng)于設(shè)置(非空字符串轉(zhuǎn)成布爾類型為true):
$("#minute").attr("readonly", true);

更新:

修復(fù)了一些小Bug,體會(huì)到這句話”看起來(lái)很簡(jiǎn)單的東西也不是那么容易“。

運(yùn)行效果如下圖所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>  <meta name="author" content="By jxqlovejava" />  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  <title>下班倒計(jì)時(shí)</title>  <style type="text/css">    body {      color:#333;      font-family:meiryo, Arial, Helvetica, sans-serif;      font-size:12px;      height:100%;      margin:0 auto;      padding:0;      width:100%;    }    html,body,div,dl,dt,dd,ul,ol,li,th,td {      margin:0;      padding:0;    }    body {      background-color: #ccc;    }    #counterContainer {      width:270px;      height:150px;      position:absolute;      left:50%;      top:50%;      margin:-75px 0 0 -135px;      border: 1px solid #ccc;      background-color: #fff;    }    #timeContainer, #toolBarContainer, #msgContainer {      text-align: center;    }    #timeContainer {      margin-top: 38px;    }    #toolBarContainer {      margin-top: 15px;    }    .timeBox {      width: 30px;    }    #minute, #second {      text-align: center;    }    .highLight {      font-weight: bold;      color: green;    }    .bt {      width: 84px;    }    #msg {      visibility:hidden;      padding-top: 10px;    }  </style></head><body>  <div id="counterContainer">    <div id="timeContainer">      還有      <input type="text" id="minute" class="timeBox" value="00">分       <input type="text" id="second" class="timeBox" value="00">秒       <span class="highLight">下班!</span>    </div>    <div id="toolBarContainer">      <input type="button" id="setOrResetBt" class="bt" value="設(shè)定" />      <input type="button" id="startBt" class="bt" value="開(kāi)始倒計(jì)時(shí)!" />    </div>    <div id="msgContainer">      <span id="msg" class="highLight">可以下班了,哦耶~~</span>    </div>  </div>  <script type="text/javascript" src="jquery-1.7.1.min.js"></script>  <script type="text/javascript">    var minuteLeft;   // 剩下的分    var secondLeft;   // 剩下的秒    var totalSeconds;  // 剩下的總秒數(shù)    var myInterval;   // 倒計(jì)時(shí)用的time interval    var isCounting = false; // 是否正在倒計(jì)時(shí)    var hasSetted = false; // 是否已設(shè)定完畢    var charLimit = 2; // 分和秒都只能為2位    // 桌面通知    function sendDesktopNotification(title, msg) {      if(!window.webkitNotifications || (window.webkitNotifications.checkPermission()!=0)) { // 不支持桌面通知或未授權(quán)        alert("不好意思,你的瀏覽器不支持桌面通知或者你未開(kāi)啟!");        return; // 不支持桌面通知      }      var notificationMsgBox = window.webkitNotifications.createNotification(icon="images/favicon.ico", title, msg);      notificationMsgBox.show();    }    $(function() {      // 將兩位字符串轉(zhuǎn)成00-59格式      function convertToStandardFormat(timeInput) {        var val = $(timeInput).val();        if(val.length == 0) {          return;        }        else if(val.length == 1) {          if(isNaN(val)) {            $(timeInput).val('0');          }        }        else if(val.length == 2 || val.length == 3) {          var intVal = parseInt(val, 10);          if(isNaN(intVal) || intVal <= 0) {            $(timeInput).val('00');          }          else {            var firstDigit = parseInt(val[0]);            if(firstDigit > 5) {              firstDigit = 0;            }            $(timeInput).val(firstDigit+val[1]);          }        }      }      // 限制分輸入框和秒輸入框都只能輸入兩個(gè)字符且范圍為00-59      $("#minute").keyup(function(e) {        if(e.keyCode == 37 || e.keyCode == 39) // 方向鍵          return;        convertToStandardFormat($(this));      });      $("#second").keyup(function(e) {        if(e.keyCode == 37 || e.keyCode == 39) // 方向鍵          return;        convertToStandardFormat($(this));      });      $("#setOrResetBt").click(function() {        if($(this).val() === "設(shè)定") {          if(parseInt($("#minute").val(), 10) == 0 && parseInt($("#second").val(), 10) == 0) {            alert("請(qǐng)?jiān)O(shè)定分、秒為0到59范圍內(nèi)的數(shù)字!");            return;          }          hasSetted = true;          // 設(shè)置分輸入框和秒輸入框不可編輯          $("#minute").attr("readonly", true);          $("#second").attr("readonly", true);          minuteLeft = parseInt($("#minute").val(), 10);          secondLeft = parseInt($("#second").val(), 10);          totalSeconds = minuteLeft*60 + secondLeft;          // 按鈕文字切換          $(this).val("重置");        }        else { // 點(diǎn)擊了重置按鈕          clearInterval(myInterval);          isCounting = false;          hasSetted = false;          $("#msg").css("visibility", "hidden");          // 設(shè)置分輸入框和秒輸入框可編輯          $("#minute").attr("readonly", false);          $("#second").attr("readonly", false);          $("#minute").val("00");          $("#second").val("00");          // 按鈕文字切換          $(this).val("設(shè)定");        }      });       $("#startBt").click(function() {        if(!hasSetted) {          alert("請(qǐng)先設(shè)定時(shí)間!")          return;        }        if(!isCounting) {          myInterval = setInterval(function() {            totalSeconds--;            if(secondLeft == 0 && minuteLeft > 0) {              minuteLeft--;              secondLeft = 59;            }            else {              secondLeft--;            }            // 更新分秒顯示            $("#minute").val(minuteLeft > 9 ? minuteLeft : ('0'+minuteLeft));            $("#second").val(secondLeft > 9 ? secondLeft : ('0'+secondLeft));            if(totalSeconds==0) {  // 下班時(shí)間到了              clearInterval(myInterval);              $("#msg").css("visibility", "visible");              sendDesktopNotification("下班了", "親,下班了!/nHappy Weekend!");            }          }, 1000); // 每一秒鐘更新一下時(shí)間        }        isCounting = true;      });    });  </script></body></html>

希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产午夜免费不卡精品理论片 | 国产激情精品一区二区三区 | 国产一级毛片av | 黄色网址免费进入 | 中文字幕在线亚洲精品 | 久久丝袜脚交足黄网站免费 | 3344永久免费 | 成人性视频在线 | 日韩视频一二区 | 免费放黄网站在线播放 | 欧美成人免费小视频 | 怦然心动50免费完整版 | 国产资源在线免费观看 | 国产精品免费观看视频 | h视频免费观看 | 日韩视频一区在线 | 久久精品视频网址 | 老女人碰碰在线碰碰视频 | 日本精品久久久久久草草 | 久久精品99国产国产精 | 中文字幕涩涩久久乱小说 | 欧美大电影免费观看 | 成人电影毛片 | 国产噜噜噜噜噜久久久久久久久 | 国产午夜电影在线观看 | 美国一级免费视频 | 久久精品一区视频 | 亚洲射逼| 美国一级黄色毛片 | 午夜九九九 | sesee99| 视频国产一区二区 | 成人国产视频在线观看 | 亚洲第一视频 | 黄色久 | 日韩视频在线一区二区三区 | 人人玩人人爽 | 国产精品成年片在线观看, 激情小说另类 | 香蕉成人在线观看 | 成人做爰高潮片免费视频韩国 | 永久av在线免费观看 |