<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前端頁面倒計時功能在很多場景中會用到,如很多秒殺活動等,本文主要介紹了用JS寫了一個30分鐘倒計時器的實現範例,感興趣的可以瞭解一下
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>Countdown Timer</title> <style type="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> <span id="numbers" style="white-space:nowrap;"></span> <table id="table1" > <tr> <td style="background-color:rgb(41, 74, 155);padding:3px;"></td> <td></td> </tr> <tr> <td style="width:100%;" colspan=2> <input id="content"/> </td> </tr> <tr> <td style="width:100%;" colspan=2> <canvas id="myCanvas" height="6"> Your browser does not support the canvas element. </canvas> </td> </tr> </table> <audio id='music'> <source src="music/Windows XP 啟動.wav" type="audio/mpeg"> Your browser does not support the audio tag. </audio> <audio id='music2'> <source src="music/Windows XP 關機.wav" type="audio/mpeg"> Your browser does not support the audio tag. </audio> <script type="text/javascript" > var timer = { 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(){ //進度條 var table = document.getElementById("table1") var span = document.getElementById('numbers') //重新整理進度條 //table2.style.width = table.style.width = span.offsetWidth + "px" var progress = 1 if(this.restSeconds > 0) progress = this.restSeconds / (this.initMinutes * 60) document.querySelector('#table1 td:nth-of-type(1)').style.width = progress * 100 + "%" var td2 = document.querySelector('#table1 td:nth-of-type(2)') if (progress < 1){ td2.style.width = (1 - progress) * 100 + "%" }else{ td2.style.display = "none" } var canvas = document.getElementById('myCanvas') canvas.width = span.offsetWidth var ctx = canvas.getContext("2d") var rectWeight = 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() var span = document.getElementById('numbers') this.setFontSize() this.restSeconds = this.initMinutes * 60 this.minute = this.initMinutes var obj = this this.handle = setInterval(function(){ if(obj.stopFlag) return if(obj.restSeconds > 0){ span.innerHTML = "" + (obj.minute < 10 ? "0" + obj.minute : obj.minute) + ":" + (!obj.coverFlag ? (obj.second < 10 ? "0" + obj.second : obj.second) : " ".repeat(4)) if(obj.restSeconds > 0){ 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() //跑完後記錄 var content = document.getElementById("content").value obj.markdownRecord(content) //不停地閃爍 window.setInterval(function(){ span.innerHTML = (span.innerHTML == "Time ")?"is up.":"Time " }, 5000) } }, 1000) document.getElementById("music").play() var numbers = 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.restSeconds > 0) return var content = 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){ var records = [] var timerHistory = localStorage.getItem("timerHistory") if(timerHistory != null){ records = JSON.parse(timerHistory) } var lastRecord = records[0] if(lastRecord && lastRecord.start == this.startTime){ lastRecord.note = content }else{ var history = { start:this.startTime, duration:this.initMinutes, note:content } records.unshift(history)//陣列頭插入元素 } var recordsJson = JSON.stringify(records) //將結果存入本地 localStorage.setItem("timerHistory", recordsJson) console.log(records[0]) console.log("Marked it Down.") }, exportHistory:function(){ var filename = 'record' + Date.now() +'.txt' var text = localStorage.getItem('timerHistory') this.exportFile(filename, text) }, exportFile:function(filename, text){ var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } } window.onresize = function(){ timer.setFontSize() timer.refreshTable() } //pause window.onclick = function(){ //timer.stopFlag = !timer.stopFlag } //main window.onload = function(){ timer.init() } </script> </body> </html>
到此這篇關於用JS寫了一個30分鐘倒計時器的實現範例的文章就介紹到這了,更多相關JS 倒計時器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45