




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第用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關(guān)機.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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)審計合規(guī)性提升試題及答案
- 2025年消防安全報告試題及答案
- 預(yù)測2024年酒店經(jīng)營管理師考試的新興試題及答案
- 設(shè)計歷史與現(xiàn)代應(yīng)用的聯(lián)系試題及答案
- 紡織機械使用中的風(fēng)險 control辦法試題及答案
- 質(zhì)量工程師2024年考試解題技巧試題及答案
- 紡織機械操作現(xiàn)場管理試題及答案
- 行業(yè)動態(tài)與2024年商務(wù)禮儀師考試的新機會試題及答案
- 酒店行業(yè)面臨的挑戰(zhàn)與機遇試題及答案
- 2025商業(yè)大廈裝修合同
- 《系統(tǒng)性紅斑狼瘡診療規(guī)范2023》解讀
- 【企業(yè)盈利能力探析的國內(nèi)外文獻(xiàn)綜述2400字】
- 中考語文總復(fù)習(xí)之漢字書法習(xí)題集
- (MC)中線導(dǎo)管的臨床應(yīng)用
- 2024-2030年專用車產(chǎn)業(yè)規(guī)劃及發(fā)展研究報告
- 課件:《中華民族共同體概論》第十五講:新時代與中華民族共同體建設(shè)
- DB50T 1426-2023 醫(yī)療衛(wèi)生機構(gòu)康復(fù)輔助器具適配服務(wù)規(guī)范
- 醫(yī)學(xué)科學(xué)中數(shù)學(xué)知識
- 新蘇教版三年級數(shù)學(xué)下冊全冊教學(xué)設(shè)計及反思
- 2025年上海市高考語文備考之古文人物傳記閱讀中選材與語言風(fēng)格比較題型分析模版
- 山東省建筑工程施工技術(shù)資料管理規(guī)程
評論
0/150
提交評論