




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第用JS寫了一個30分鐘倒計時器的實現示例前端頁面倒計時功能在很多場景中會用到,如很多秒殺活動等,本文主要介紹了用JS寫了一個30分鐘倒計時器的實現示例,感興趣的可以了解一下
!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)//數組頭插入元素
}
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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西醫外科學練習題
- 保潔員初級模擬試題
- 網絡安全技術實踐測試題
- 浙江國企招聘2025杭州市臨安區城市發展投資集團有限公司下屬子公司招聘8人筆試參考題庫附帶答案詳解
- 2025福建武夷交通運輸股份有限公司招聘10人筆試參考題庫附帶答案詳解
- 2025年黃山旅游發展股份有限公司春季招聘75人筆試參考題庫附帶答案詳解
- 青馬試題填空題及答案
- 鏟車路障考試題及答案
- 紡織品設計師證書試題及答案匯集
- 固廢處理項目前景評估與策略分析
- (市質檢)莆田市2025屆高中畢業班第四次教學質量檢測試卷語文試卷(含答案解析)
- 瓷磚空鼓裝修合同協議
- 2025年四川筠連縣國有資本投資運營有限公司招聘筆試參考題庫含答案解析
- 2024年貴州遵義公開招聘社區工作者考試試題答案解析
- 中職生職業生涯課件
- 煙臺2025年煙臺市蓬萊區“蓬選”考選90人筆試歷年參考題庫附帶答案詳解
- 2025年全國低壓電工證(復審)考試筆試試題(300題)含答案
- 2025年浙江省生態環境廳所屬事業單位招聘考試備考題庫
- 入團考試測試題及答案
- 【語文試卷+答案 】上海市崇明區2025屆高三第二學期第二次模擬考試(崇明二模)
- 《中國古典文學中的詠花詩與審美文化》論文
評論
0/150
提交評論