




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第用JS寫了一個30分鐘倒計時器的實現(xiàn)示例前端頁面倒計時功能在很多場景中會用到,如很多秒殺活動等,本文主要介紹了用JS寫了一個30分鐘倒計時器的實現(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啟動.wav"type="audio/mpeg"
Yourbrowserdoesnotsupporttheaudiotag.
/audio
audioid='music2'
sourcesrc="music/WindowsXP關機.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(){
//進度條
vartable=document.getElementById("table1")
varspan=document.getElementById('numbers')
//刷新進度條
//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
//刷新進度條
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)
//將結果存入本地
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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療資源共享構建可持續(xù)的醫(yī)療服務體系
- 醫(yī)療大數(shù)據(jù)下的醫(yī)療信息管理系統(tǒng)建設
- 醫(yī)療器機械生產(chǎn)過程中的風險管理
- 區(qū)塊鏈技術原理詳解構建現(xiàn)代數(shù)字信任的基石
- 醫(yī)療旅游與健康管理的結合實踐及發(fā)展趨勢分析
- 從醫(yī)療角度看區(qū)塊鏈技術的應用價值
- 行政部年中工作總結模版
- 借款合同范例補充合同
- 傳統(tǒng)新質(zhì)生產(chǎn)力
- 糖原累積病的臨床護理
- (市質(zhì)檢)莆田市2025屆高中畢業(yè)班第四次教學質(zhì)量檢測試卷語文試卷(含答案解析)
- 瓷磚空鼓裝修合同協(xié)議
- 2025年四川筠連縣國有資本投資運營有限公司招聘筆試參考題庫含答案解析
- 中職生職業(yè)生涯課件
- 煙臺2025年煙臺市蓬萊區(qū)“蓬選”考選90人筆試歷年參考題庫附帶答案詳解
- 2025年全國低壓電工證(復審)考試筆試試題(300題)含答案
- 入團考試測試題及答案
- 2025年湘教版初中地理七年級下冊重點知識點梳理與歸納
- 勞務公司與公司合作協(xié)議書
- 滾筒式柑橘分選機的設計
- HDPE塑料檢查井施工工藝
評論
0/150
提交評論