定時器應用

2021-09-20 22:56:00 字數 3800 閱讀 2537

本文屬於定時器的應用部分,分別用於實現與時間相關的四個應用,包括時鐘、倒計時、秒錶和鬧鐘。與時間相關需要用到時間和日期物件date,可自行查閱。

開啟定時器:

setinterval(函式,時間) //間隔型

function

show()

setinterval(show,1000); //每隔1000毫秒執行一次show函式

settiomeout //延時型

function

show()

settiomeout (show,1000); //延時1000毫秒執行一次show函式,只執行一次

關閉定時器:

clearinterval

cleartimeout

最簡單的時鐘製作辦法是通過正規表示式的exec()方法,將時間物件的字串中的時間部分擷取出來,使用定時器重新整理即可。

id="mydiv">

div>

mydiv.innerhtml = /\d\d:\d\d:\d\d/.exec(new

date().tostring())[0];

setinterval(function(),500);

script>

簡易倒計時

簡易倒計時就是每1s通過setinterval將設定的時間減去1來達到要求

id="mydiv">

for="set">

type="number"

id="set"

step="1"

value="0">秒label>

id="btn">確定button>

id="reset">重置button>

div>

var timer;

reset.onclick = function()

btn.onclick = function()

set.value = number(set.value) - 1;

},1000);

}

script>

由定時器的執行機制,我們知道每間隔1000ms去改變時間的作法並不可靠。更精確地做法,應該是與系統的執行時間作為參照,倒計時的時間變化與系統的時間變化同步,達到精確倒計時的效果。

id="mydiv">

for="hour">

type="number"

id="hour"

min="0"

max="23"

step="1"

value="0" />時label>

for="minute">

type="number"

id="minute"

min="0"

max="59"

step="1"

value="0" />分label>

for="second">

type="number"

id="second"

min="0"

max="23"

step="1"

value="0" />秒label>

id="btn">確定button>

id="reset">重置button>

div>

var timer;

//輸入限制

hour.onchange = function()

second.onchange = minute.onchange = function()

reset.onclick = function()

btn.onclick = function()

//原始儲存值

var setori = hour.value*3600 + minute.value*60 + second.value*1;

//原始系統時間值

var timeori = (new

date()).gettime();

//現在所剩時間值

var setnow;

cancelanimationframe(timer);

timer = requestanimationframe(function

fn()

settimeout(function(),1000) }})

}script>

簡易秒錶

秒錶與倒計時的思路相同,相比而言,更加簡單。每間隔100ms增加100ms即可

id="mydiv">

for="set">

id="set"

value="0">

label>

id="btn">開始button>

id="reset">重置button>

div>

var timer;

var con = 'off';

var num = 0;

reset.onclick = function()

btn.onclick = function(),100);

}else

}

script>

鬧鐘其實就是在時鐘的基礎上增加乙個預定時間設定,鬧鐘設定需要將設定時間轉換成距離2023年1月1日的毫秒數,然後再算出與當前時間的差值。隨著當前時間的不斷增加,當差值為0時,鬧鐘響起。

id="mydiv">

div>

id="con">

for="hour">

type="number"

id="hour"

min="0"

max="23"

step="1"

value="0" />時label>

for="minute">

type="number"

id="minute"

min="0"

max="59"

step="1"

value="0" />分label>

for="second">

type="number"

id="second"

min="0"

max="23"

step="1"

value="0" />秒label>

id="btn">確定button>

id="reset">重置button>

div>

id="show">

div>

var timer;

//所剩時間

var dis;

mydiv.innerhtml = /\d\d:\d\d:\d\d/.exec(new

date().tostring())[0];

setinterval(function(),100);

reset.onclick = function()

btn.onclick = function()

for(var i = 0; i < 3; i++)

cancelanimationframe(timer);

timer = requestanimationframe(function

fn()

timer = settimeout(function(),1000)

}});

}script>

作為定時器來說,最麻煩的地方是定時器管理。如果,定時器只開啟不關閉,則會造成定時器疊加效果,使得執行越來越快。所以,先關閉再啟用定時器是乙個好習慣

8051定時器應用

8051系列微控制器中的定時器如何用來測量外部脈衝的週期。有看到過相關資料談及使用定時器來測量外部脈衝的週期,但不夠詳細,這次在試驗的過程中遇到乙個類似的問題,在教科書上只是簡單提及,究竟怎麼樣使用,沒有詳細說明,使用方法也不難,要使用定時器來測量外部脈衝的週期,首先對定時器初始化,方式選擇依據你的...

VC 定時器應用

目前做的專案其中有兩個功能 選單 是 1 載入 exi檔案 已實現 2 載入 profile 檔案 要實現 其中 profile 檔案中有描述 exi檔案的資訊,試圖在載入 profile 時,也要載入 exi檔案。其中載入 exi檔案的內容已經實現了,它彈出 載入 exi檔案對話方塊 在對話方塊中...

定時器的應用

timertask類 new timer schedule new timertask 3000 過多少時間再執行run方法 單位是毫秒 5000,3000 先過5秒執行一次,之後3秒迴圈執行一次 有時候可能會碰到一些需求,要你先2秒執行一次,再之後4秒執行一次,再之後2秒執行一次,再之後4秒執行一...