JS使用setInterval实现倒计时功能

setInterval() 是JS的一个全局函数,可以按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由于setInterval的循环特性,所以用于计算时间特别合适。

JS实现思路也特别简单:获取目标时间和当前时间 => 计算时间差 => 重复计算并渲染到页面

  • 首先获取两个时间点:
var date = new Date('2022/1/1 00:00:00').getTime();//获取目标时间的时间戳
var now = new Date().getTmie();//当前时间戳
  • 上面代码获取了两个时间点,下面计算一下时间差:
var second = Math.floor((date - now) / 1000);//时间差秒数
var day = Math.floor(second / 86400);//时间差天数
second = second % 86400;//除去天数剩下的秒数
var hour = Math.floor(second / 3600);//剩下秒数的小时数
second %= 3600;//除去小时数剩下的秒数
var minute = Math.floor(second / 60);//剩下秒数的分钟数
second %= 60;//除去分钟数剩下的秒数
  • 上面计算完成后我们获取到了时间差的天数、小时、分钟和秒数,如果要年数可以自行计算,但是觉得没有太大必要。然后将上面封装成函数并重复1秒调用即可,先简单打印验证一下是否实现效果。
function getDate(){
 var date = new Date('2022/1/1 00:00:00').getTime();//获取目标时间的时间戳
 var now = new Date().getTmie();//当前时间戳
 var second = Math.floor((date - now) / 1000);//时间差秒数
 var day = Math.floor(second / 86400);//时间差天数
 second = second % 86400;//除去天数剩下的秒数
 var hour = Math.floor(second / 3600);//剩下秒数的小时数
 second %= 3600;//除去小时数剩下的秒数
 var minute = Math.floor(second / 60);//剩下秒数的分钟数
 second %= 60;//除去分钟数剩下的秒数
 console.log("还剩 "+day+" 天 "+hour+" 小时 "+minute+" 分钟 "+second+" 秒 ");
}
setInterval(getDate, 1000);//每秒调用上面的函数,控制台每秒输出

后面渲染的操作只需替换输出控制台的操作即可,这里也简单的实现一下,实现的方法也不止一种。

  • 完整示例HTML代码:
<!DOCTYPE html>
<html lang="zh">
<head>
 <meta charset="UTF-8">
 <title>setInterval实现倒计时</title>
 <style>
 *{padding: 0;margin: 0;}
 .container {
 font-size: 60px;
 text-align: center;
 position: absolute;
 left: 50%;
 top: 50%;
 transform: translate(-50%,-50%);
 }
 #datetime {
 color: red;
 }
 .time {
 color: black;
 }
 </style>
</head>
<body>
 <div class="container">
 <div>距离2022年还有</div>
 <div id="datetime"></div>
 </div>
 <script>
 var datetime = document.getElementById('datetime');
 function fresh(n) {
 return n >= 0 && n < 10 ? '0' + n : '' + n;
 }
 function getDate(){
 var date = new Date('2022/1/1 00:00:00').getTime();//获取目标时间的时间戳
 var now = new Date().getTime();//当前时间戳
 var second = Math.floor((date - now) / 1000);//时间差秒数
 var day = Math.floor(second / 86400);//时间差天数
 second = second % 86400;//除去天数剩下的秒数
 var hour = Math.floor(second / 3600);//剩下秒数的小时数
 second %= 3600;//除去小时数剩下的秒数
 var minute = Math.floor(second / 60);//剩下秒数的分钟数
 second %= 60;//除去分钟数剩下的秒数
 var str = fresh(day) + '<span class="time">天</span>' +
 fresh(hour) + '<span class="time">小时</span>' +
 fresh(minute) + '<span class="time">分钟</span>' +
 fresh(second) + '<span class="time">秒</span>';
 datetime.innerHTML = str;
 }
 setInterval(getDate, 1000);//每秒调用上面的函数
 </script>
</body>
</html>

效果预览图:

2022倒计时

白驹过隙,转眼间已近岁末。时间在悄然流逝,年华在匆匆而过;时光无限荏苒,光阴不再重复,记忆永远成了昨天。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容