




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第用JS寫了一個(gè)30分鐘倒計(jì)時(shí)器的實(shí)現(xiàn)示例前端頁面倒計(jì)時(shí)功能在很多場(chǎng)景中會(huì)用到,如很多秒殺活動(dòng)等,本文主要介紹了用JS寫了一個(gè)30分鐘倒計(jì)時(shí)器的實(shí)現(xiàn)示例,感興趣的可以了解一下
!DOCTYPEHTML
html
head
metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/
titleCountdownTimer/title
styletype="text/css"
input{
padding-bottom:0px;
padding-top:0px;
border-top-width:0px;
border-left-width:0px;
border-right-width:0px;
font-size:20px;
width:100%;
}
/style
/head
body
spanid="numbers"/span
tableid="table1"
tr
td/td
td/td
/tr
tr
tdcolspan=2
inputid="content"/
/td
/tr
tr
tdcolspan=2
canvasid="myCanvas"height="6"
Yourbrowserdoesnotsupportthecanvaselement.
/canvas
/td
/tr
/table
audioid='music'
sourcesrc="music/WindowsXP啟動(dòng).wav"type="audio/mpeg"
Yourbrowserdoesnotsupporttheaudiotag.
/audio
audioid='music2'
sourcesrc="music/WindowsXP關(guān)機(jī).wav"type="audio/mpeg"
Yourbrowserdoesnotsupporttheaudiotag.
/audio
scripttype="text/javascript"
vartimer={
initMinutes:30,
restSeconds:0,
minute:0,
second:0,
handle:0,
stopFlag:false,
startTime:0,
content:"asdasd",
coverFlag:false,
setFontSize:function(){
document.getElementById("numbers").style.fontSize=(window.innerWidth
||document.documentElement.clientWidth
||document.body.clientWidth)/3+"px"
},
refreshTable:function(){
//進(jìn)度條
vartable=document.getElementById("table1")
varspan=document.getElementById('numbers')
//刷新進(jìn)度條
//table2.style.width=
table.style.width=span.offsetWidth+"px"
varprogress=1
if(this.restSeconds0)
progress=this.restSeconds/(this.initMinutes*60)
document.querySelector('#table1td:nth-of-type(1)').style.width=progress*100+"%"
vartd2=document.querySelector('#table1td:nth-of-type(2)')
if(progress1){
td2.style.width=(1-progress)*100+"%"
}else{
td2.style.display="none"
}
varcanvas=document.getElementById('myCanvas')
canvas.width=span.offsetWidth
varctx=canvas.getContext("2d")
varrectWeight=progress*span.offsetWidth
ctx.clearRect(0,0,span.offsetWidth,20)
ctx.fillStyle="#FF0000"
//console.log("rectWeight:"+rectWeight)
//console.log(progress*span.offsetWidth)
ctx.fillRect(0,0,rectWeight,20)
},
init:function(){
this.startTime=Date.now()
varspan=document.getElementById('numbers')
this.setFontSize()
this.restSeconds=this.initMinutes*60
this.minute=this.initMinutes
varobj=this
this.handle=setInterval(function(){
if(obj.stopFlag)
return
if(obj.restSeconds0){
span.innerHTML=""+(obj.minute10"0"+obj.minute:obj.minute)+":"+
(!obj.coverFlag(obj.second10"0"+obj.second:obj.second):"nbsp;".repeat(4))
if(obj.restSeconds0){
obj.restSeconds-=1
}
obj.minute=
Math.floor(obj.restSeconds/60)
obj.second=
obj.restSeconds-obj.minute*60
//刷新進(jìn)度條
obj.refreshTable()
}else{
span.innerHTML="Time"
window.clearInterval(obj.handle)
document.getElementById("music2").play()
//跑完后記錄
varcontent=document.getElementById("content").value
obj.markdownRecord(content)
//不停地閃爍
window.setInterval(function(){
span.innerHTML=(span.innerHTML=="Time")"isup.":"Time"
},5000)
}
},1000)
document.getElementById("music").play()
varnumbers=document.getElementById("numbers")
numbers.addEventListener("click",function(){
obj.coverFlag=!obj.coverFlag
})
numbers.addEventListener("dblclick",function(){
obj.stopFlag=!obj.stopFlag
})
document.getElementById('content').addEventListener("blur",function(){
if(obj.restSeconds0)
return
varcontent=document.getElementById("content").value
if(this.content!=content){
this.content=content
obj.markdownRecord(content)
}
})
document.getElementById('table1').addEventListener("dblclick",function(){
console.log("timerHistory:")
console.log(localStorage.getItem('timerHistory'))
console.log("\n")
obj.exportHistory()
})
},
markdownRecord:function(content){
varrecords=[]
vartimerHistory=localStorage.getItem("timerHistory")
if(timerHistory!=null){
records=JSON.parse(timerHistory)
}
varlastRecord=records[0]
if(lastRecordlastRecord.start==this.startTime){
lastRecord.note=content
}else{
varhistory={
start:this.startTime,
duration:this.initMinutes,
note:content
}
records.unshift(history)//數(shù)組頭插入元素
}
varrecordsJson=JSON.stringify(records)
//將結(jié)果存入本地
localStorage.setItem("timerHistory",recordsJson)
console.log(records[0])
console.log("MarkeditDown.")
},
exportHistory:function(){
varfilename='record'+Date.now()+'.txt'
vartext=localStorage.getItem('timerHistory')
this.exportFile(filename,text)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 區(qū)域家用紡織品市場(chǎng)可持續(xù)發(fā)展策略分析考核試卷
- 機(jī)器視覺在智能交通信號(hào)燈故障檢測(cè)中的應(yīng)用考核試卷
- 2024年事業(yè)單位考試山西省長(zhǎng)治《公共基礎(chǔ)知識(shí)》高分沖刺試題含解析
- 績(jī)效考評(píng)工作實(shí)施方案(3篇)
- 線下與線上聯(lián)合運(yùn)營方案
- 公司安全生產(chǎn)工作總結(jié)(匯編14篇)
- 四川省眉山市東坡區(qū)校際聯(lián)考2024-2025學(xué)年高一下學(xué)期6月期末政治試卷(含答案)
- 策劃方案的藍(lán)圖與執(zhí)行路徑
- 江城區(qū)七一慰問活動(dòng)方案
- 漢服讀書活動(dòng)方案
- 2025年 汕頭市公安局警務(wù)輔助人員招聘考試筆試試卷附答案
- 腦出血的護(hù)理查房
- 天津大學(xué)強(qiáng)基計(jì)劃校測(cè)面試題
- 2025年大學(xué)思想政治理論課程考試試卷及答案
- 合同的內(nèi)容講課件
- 陜西省專業(yè)技術(shù)人員繼續(xù)教育2025公需課《黨的二十屆三中全會(huì)精神解讀與高質(zhì)量發(fā)展》20學(xué)時(shí)題庫及答案
- 藥品管理學(xué)概論(藥品管理學(xué))
- JC∕T 1083-2008 水泥與減水劑相容性試驗(yàn)方法
- 深圳市裝配式建筑住宅項(xiàng)目建筑面積獎(jiǎng)勵(lì)實(shí)施細(xì)則
- ADL常用評(píng)定量表
- 2019年北京市中考數(shù)學(xué)試題(含答案)
評(píng)論
0/150
提交評(píng)論