亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript計時器編寫過程與實現方法

2019-11-20 10:29:32
字體:
來源:轉載
供稿:網友

JavaScript是一門非常容易上手的腳本語言,而且工具繁多,功能強大,因為一直做后端的關系,筆者目前也只是略學一點皮毛。

接下來進入正題――計時器。先談下計時器的功能:

1.計時器要能夠在頁面上顯示時間

2.每秒鐘計時器刷新,秒每滿60進分鐘1,分鐘每滿60進小時1

3.計時器需要能夠重置,也就是重新計時

4.計時結束時,需要能夠有獲取計時時間的方法

以上功能很簡單,計時還應該有暫停、繼續計時等功能,沒關系,我們一個一個來。

第一步:

我們做一個簡單的頁面,要有一個現實時間的標簽,要有開始、暫停倆按鈕,頁面繪制如下:

不要為一個頁面花太多時間哦,這只是幫助你寫寫第一段代碼練練手~

 第二步:

我們分析下計時器需要哪些屬性:

1.計時,需要開始時間

2.結束時間

3.總共走了多長時間,這個屬性是要返回給使用者的

4.展示器,其實就是個jquery對象或者dom對象啦,計時是要在一個地方展示的嘛

5.展示時間需要進行拆解,于是我們有小時屬性

6.分鐘屬性

7.秒屬性(其實被總時間囊括了,先記上,萬一用得到呢)

我們看下代碼:

    var startTime;//開始時間    var endTime;//結束時間    var timeLength;//總時長    var timeSpan;//計時器走過的時間    var displayer;//時間顯示器    var hh=0;//小時    var mm=0;//分鐘    var status=0;//計時狀態  

乍一看好像多了幾個屬性,因為計時會用到JavaScript的setTimeout方法,該方法會返回一個對象,我們可以利用此對象將setTimeout清除(clearTimeout);

 第三步:

我們分析下計時器需要哪些方法:

1.計時器需要啟動,于是我們有開始方法

2.計時器需要停止,于是我們有停止方法,停止后應該告訴使用者計了多長時間,于是應該返回時長

3.計時器還應該有個暫停功能,暫停后,可以在暫停的位置上再次開始計時,暫停也應該返回時長

4.圍繞啟動停止,還應該有每秒鐘計時器的內心活動,類似一個委托方法,美秒執行一次

5.呈現邏輯,我們要講真正的時間顯示給頁面上的展示器,并且做一些可讀性更好的格式轉換

 上代碼,構造函數:

function createTimer(_startTime,_endTime,_timeLength,_displayer){      startTime=_startTime;//開始時間      endTime=_endTime;//結束時間      timeLength=_timeLength;//總時長      displayer=_displayer;//時間顯示器      hh=0;//小時      mm=0;//分鐘      status=0;//計時狀態    }  

計時器開始:

    var start =function(){      hh = 0;      mm = 0;      startTime=new Date();      status = setTimeout(beat, 1000);    } 

 計時結束:

    var stop=function(){      clearTimeout(status);      endTime=new Date();      timeLength=parseInt((endTime-startTime)/1000);      alert(timeLength);    }

每秒鐘計時器的內心活動:

     var beat=function(){      endTime = new Date();      timeSpan = parseInt((endTime - startTime)/1000);      displayer[0].innerHTML = checkTime(timeSpan);      status = setTimeout(beat, 1000);    }

為了能夠展現上圖的00:00:00,我們需要一段呈現邏輯

  var checkTime=function(len){      len=len-mm*60;      if (len >= 60) {        this.mm++;        //starttime1 = new Date();        len = 0;      }      mm=mm-hh*60;      if (mm >= 60) {        hh++;        mm = 0;      }      return j(self.hh) + ":" +j(mm) + ":" + j(len);    }      var j=function(arg){      return arg >= 10 ? arg : "0" + arg;    } 

我們啟動計時器,這個簡單的計時器就開始跑了^_^

是不是少了點什么:計時器哪能沒有暫停呀,筆者那會構思這些的時候,也沒想到暫停功能,正看著它一秒一秒跳動著,傻樂呢,直到業務需要,才想起來,得加上這功能。

沒關系,我們繼續設計,demo頁上添加一個暫停按鈕:P

先分析下:

1.暫停后,肯定要在上次暫停的節點上重新開始,這塊功能我們做在開始按鈕里,于是我們需要一個標識位,來判斷是重新開始,還是暫停后開始

2.我們需要記錄暫停的時間點

3.暫停的時間間隔最好也能記下來,能用得到,不然再次開始的時候,時間在呈現上會立刻跳到間隔之后(比如暫停時是00:00:09,暫停一分鐘后,如果不作調整直接開始,時間會變成00:01:09)

于是我們添加三個屬性:

  var isParse=false;//是否為暫停    var parseTime;//暫停時間點    var intervalTime = 0;//暫停時間間隔

暫停方法:

   var parse=function(){      parseTime = new Date();      isParse = true;      clearTimeout(status);    }  

重寫開始方法和呈現方法:

    var start =function(){      if(!isParse){        startTime=new Date();        startTime1=startTime;        hh = 0;        mm = 0;        startTime=new Date();        status = setTimeout(beat, 1000);      }      else{        intervalTime=parseInt((intervalTime + (new Date() - parseTime) / 1000));                starttime1 = startTime;        status = setTimeout(beat, 1000);      }    }    var checkTime=function(len){      len=len-mm*60-intervalTime;      if (len >= 60) {        mm++;        len = 0;      }            mm=mm-hh*60;      if (mm >= 60) {        hh++;        mm = 0;      }      return j(hh) + ":" +j(mm) + ":" + j(len);    }  

以上,搞定,我們的計時器擁有了暫停功能~

 

看下代碼全覽,核心代碼不到一百行。

 寫到這里,主要工作就做完啦,其實還可以進行封裝,利用prototype,將方法全部附到一個對象里,當實例化一個timer對象并初始化一些關鍵屬性后,這些方法都可以被對象調用。這里就不贅述了,感興趣的童鞋可以試試~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品27p| 国产国产精品人在线视| 国产亚洲aⅴaaaaaa毛片| 91精品视频在线播放| 欧美日韩亚洲一区二区三区| 国产91精品不卡视频| 久久亚洲国产精品| 成人福利免费观看| 久久天天躁夜夜躁狠狠躁2022| 国产香蕉一区二区三区在线视频| 成人激情春色网| 亚洲高清福利视频| 亚洲精品一区中文| 不卡伊人av在线播放| 欧美性极品少妇精品网站| 久久久噜噜噜久久中文字免| 欧美激情乱人伦| 欧美日本中文字幕| 狠狠躁18三区二区一区| 欧美日韩国产影院| 色与欲影视天天看综合网| 亚洲a在线观看| 爱福利视频一区| 国产一区二区三区在线观看视频| 国产69精品久久久| xx视频.9999.com| 草民午夜欧美限制a级福利片| 欧美日韩在线视频一区| 欧美中文字幕在线观看| 97免费视频在线播放| 国产亚洲精品美女| 日韩一中文字幕| 91成人免费观看网站| 久久精品在线播放| 亚洲激情国产精品| 欧美激情中文网| 欧美激情国产日韩精品一区18| 久久久999国产| 欧美视频13p| 国产精品jvid在线观看蜜臀| 日韩av综合网| 久久不射热爱视频精品| 欧美成人免费全部| 国产男女猛烈无遮挡91| 亚州av一区二区| 国产欧美日韩中文字幕在线| 欧美一级片在线播放| 久久精品国产一区二区三区| 精品国产一区二区三区在线观看| 日本精品一区二区三区在线播放视频| 成人网在线免费观看| 日韩av成人在线| 成人免费淫片aa视频免费| 国产午夜精品免费一区二区三区| 97视频免费看| 国产91久久婷婷一区二区| 国产欧美日韩亚洲精品| 国产亚洲欧美一区| 黑人精品xxx一区| 午夜精品一区二区三区在线视频| 国产精品久久久| 98精品在线视频| 国产精品视频男人的天堂| 亚洲精品视频中文字幕| 国产精品专区第二| 91伊人影院在线播放| 亚洲欧美日韩天堂| 亚洲free嫩bbb| 国产精品偷伦免费视频观看的| 国产精品久久久久久久久久99| 91在线中文字幕| 国产一区香蕉久久| 国产成人精品久久二区二区| 在线亚洲午夜片av大片| 欧美高跟鞋交xxxxhd| 精品久久久久久久久久久久| 久久久久一本一区二区青青蜜月| 成人a在线观看| 福利一区视频在线观看| 欧美日韩第一视频| 欧美片一区二区三区| 国产欧美日韩免费看aⅴ视频| 欧美一区视频在线| 黑人精品xxx一区一二区| 久久久久久久久91| 日韩在线观看免费| 国产小视频91| 欧美日韩电影在线观看| 美女撒尿一区二区三区| 日韩高清免费观看| 国产精品日韩久久久久| 欧美日韩国产123| 亚洲精品在线看| 国语自产精品视频在免费| 全亚洲最色的网站在线观看| 久久国产视频网站| 日韩欧美aⅴ综合网站发布| 一区国产精品视频| 欧美成人黄色小视频| 理论片在线不卡免费观看| 国产激情视频一区| 国产在线高清精品| 久久精品国产欧美亚洲人人爽| 国产精品在线看| 日韩欧亚中文在线| 夜色77av精品影院| 91影视免费在线观看| 亚洲三级av在线| 国产精品激情av电影在线观看| 97视频在线观看免费高清完整版在线观看| 成人444kkkk在线观看| 成人97在线观看视频| 亚洲精品久久久一区二区三区| 韩国视频理论视频久久| 国产美女搞久久| 亚洲色图15p| 亚洲高清一区二| 8090理伦午夜在线电影| 日本午夜精品理论片a级appf发布| 国产精品稀缺呦系列在线| 久久久久久久香蕉网| 国产亚洲视频中文字幕视频| 色综合久久精品亚洲国产| 国产小视频国产精品| 欧美精品久久久久久久久久| 欧美成人亚洲成人| 久久免费视频这里只有精品| 日韩有码在线播放| 国产精品久久久| 好吊成人免视频| 日韩av免费在线| 青草青草久热精品视频在线网站| 国产精品入口免费视| 亚洲欧美综合图区| 日韩av影院在线观看| 久久久www成人免费精品张筱雨| 中文字幕自拍vr一区二区三区| 欧美—级a级欧美特级ar全黄| 成人黄色激情网| 日韩免费在线播放| 国产精品流白浆视频| 亚洲欧美综合精品久久成人| 日韩视频中文字幕| 91av视频在线观看| 午夜精品视频网站| 日韩av综合中文字幕| 欧美日韩久久久久| 国产噜噜噜噜噜久久久久久久久| 久久69精品久久久久久久电影好| 91精品综合视频| 亚洲第一二三四五区| 亚洲欧洲美洲在线综合| 韩国美女主播一区| 欧美精品一区在线播放| 青青a在线精品免费观看| 亚洲欧美日韩天堂一区二区| 97视频免费观看| 国内精品在线一区| 亚洲jizzjizz日本少妇| 欧美诱惑福利视频| 精品久久久久久| 成人www视频在线观看| 欧美激情在线视频二区| 中文字幕亚洲字幕|