本文屬於定時器的應用部分,分別用於實現與時間相關的四個應用,包括時鐘、倒計時、秒錶和鬧鐘。與時間相關需要用到時間和日期物件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秒執行一...