用JS寫了一個30分鐘倒計時器的實現(xiàn)示例_第1頁
用JS寫了一個30分鐘倒計時器的實現(xiàn)示例_第2頁
用JS寫了一個30分鐘倒計時器的實現(xiàn)示例_第3頁
用JS寫了一個30分鐘倒計時器的實現(xiàn)示例_第4頁
用JS寫了一個30分鐘倒計時器的實現(xiàn)示例_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論