首页 > 其他分享 >JS倒计时效果

JS倒计时效果

时间:2023-04-13 11:57:33浏览次数:32  
标签:60 00 01 效果 10 JS 倒计时 var

倒计时实现思路:
1-用户输入的时间减去当前的时间就是剩余的时间,即倒计时
2-不能用时分秒直接相减,因为出来的结果会是负数,比如01分减去15分,结果是负14分
3-需要引入时间戳的概念,用户输入时间的总毫秒数减去当前时间的总毫秒数,得到的就是剩余时间的毫秒数
4-最后把剩余时间的毫秒数转化成天、时、分、秒的格式化展示

静态倒计时

 

// 定义变量,用于接收用户输入的截止时间,初始化时默认2020-12-01 18:29:59
var deadline = prompt('请输入截止时间:', '2020-12-01 18:29:59');

// 定义倒计时函数
function countDown() {
    var currentTime = +new Date(); // 当前时间距离1970-01-01 00:00:00的毫秒数
    var futureTime = +new Date(deadline); // 用户输入的截止时间距离1970-01-01 00:00:00的毫秒数
    var times = (futureTime - currentTime) / 1000; // 截止时间减去当前时间还剩下多少秒
    var d = parseInt(times / 60 / 60 / 24); // 将剩余秒数转化成天数,舍弃了不足1天的部分
    d = d < 10 ? '0' + d : d; // 三元表达式,小于10,在数字前面补0,实现两位数展示
    var h = parseInt(times / 60 / 60 % 24); // 将不足1天的部分,转化为小时,舍弃了不足1小时的部分
    h = h < 10 ? '0' + h : h; // 三元表达式,小于10,在数字前面补0,实现两位数展示
    var m = parseInt(times / 60 % 60); // 将不足1小时的部分,转化为分钟,舍弃了不足1分钟的部分
    m = m < 10 ? '0' + m : m; // 三元表达式,小于10,在数字前面补0,实现两位数展示
    var s = parseInt(times % 60); // 将不足1分钟的部分,转化为秒数,舍弃了不足1秒的部分
    s = s < 10 ? '0' + s : s; // 三元表达式,小于10,在数字前面补0,实现两位数展示

	// 页面输出倒计时
    document.write('距离活动结束,还有<br/>' + d + '天' + h + '时' + m + '分' + s + '秒');
}

// 调用倒计时函数
countDown();

 

动态倒计时

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>倒计时效果</title>
</head>

<body>
    <!-- 设置一个空div用于接收倒计时 -->
    <div id="showCountDownTime"></div>
    
    <script>
        // 定义变量,用于接收用户输入的截止时间,初始化时默认2020-12-01 18:29:59
        var deadline = prompt('请输入截止时间:', '2020-12-01 18:29:59');
        
        // 定义倒计时函数
        function countDown() {
            var currentTime = +new Date(); // 当前时间距离1970-01-01 00:00:00的毫秒数
            var futureTime = +new Date(deadline); // 用户输入的截止时间距离1970-01-01 00:00:00的毫秒数
            var times = (futureTime - currentTime) / 1000; // 截止时间减去当前时间还剩下多少秒
            var d = parseInt(times / 60 / 60 / 24); // 将剩余秒数转化成天数,舍弃了不足1天的部分
            d = d < 10 ? '0' + d : d; // 三元表达式,小于10,在数字前面补0,实现两位数展示
            var h = parseInt(times / 60 / 60 % 24); // 将不足1天的部分,转化为小时,舍弃了不足1小时的部分
            h = h < 10 ? '0' + h : h; // 三元表达式,小于10,在数字前面补0,实现两位数展示
            var m = parseInt(times / 60 % 60); // 将不足1小时的部分,转化为分钟,舍弃了不足1分钟的部分
            m = m < 10 ? '0' + m : m; // 三元表达式,小于10,在数字前面补0,实现两位数展示
            var s = parseInt(times % 60); // 将不足1分钟的部分,转化为秒数,舍弃了不足1秒的部分
            s = s < 10 ? '0' + s : s; // 三元表达式,小于10,在数字前面补0,实现两位数展示

            // 通过id获取div对象,并赋值给变量oDiv
            var oDiv = document.getElementById('showCountDownTime');
            // 利用HTML对象的innerHTML属性,将倒计时写入div
            oDiv.innerHTML = '距离活动结束,还有<br/>' + d + '天' + h + '时' + m + '分' + s + '秒';
        }
        
        // 设置定时器,每个1秒钟调用倒计时函数
        setInterval(countDown, 1000);
    </script>
</body>
</html>

最终实现效果:

标签:60,00,01,效果,10,JS,倒计时,var
From: https://www.cnblogs.com/dlx609/p/17314146.html

相关文章

  • Nuxtjs实现服务端渲染和静态化站点
    本文将介绍如何使用Nuxtjs对vue项目进行ssr和静态化处理。Nuxtjs简单介绍首先,我们简单了解下Nuxtjs框架,Nuxt.js是一个基于Vue的通用框架,主要用于解决Vue项目的服务端渲染(SSR)。它本质上是一个Vue框架,增加一层node服务,通过对客户端/服务端的抽象封装,使用Nuxt各种资源配置,处理服......
  • VUE.JS和NODE.JS构建一个简易的前后端分离静态博客系统(二)
    后台管理页面,需要配合NODE.JS搭建的EXPRESS服务器使用。main.jsimportVuefrom'vue'importAppfrom'./App.vue'importrouterfrom'./router'import{Button,Input,Form,Link,Divider,Upload,Dialog,Card,Popover,Messa......
  • js中无需点击就可以实现页面跳转
    js中无需点击就可以实现页面跳转第一种:复制代码代码如下:<scriptlanguage="javascript"type="text/javascript">window.location.href="xx.jsp?backurl="+window.location.href;</script>第二种:复制代码代码如下:<scriptlanguage="javascript......
  • js 计算时间范围的时间差(只计算工作日,不计算周六周日,精确到天)
    直接上demo代码和截图btnClick(){ varoneDay=1000*60*60*24; vardays=0; //dates是一个时间范围,startDate是时间范围的开始时间,endDate是结束时间 varstartDate=this.dates[0]; varendDate=this.dates[1]; if(endDate.getTime()>0&&startDate.g......
  • Vue.js 独享路由守卫
    视频独享守卫:beforeEnter(to,from,next){ console.log('beforeEnter',to,from) if(to.meta.isAuth){//判断当前路由是否需要进行权限控制 if(localStorage.getItem('school')==='atguigu'){ next() }else{ alert('暂无权限查看') //next(......
  • 【BUG】ExtJS 的Tab Reorder 插件持续更新布局问题解决办法 (Solution to layout issue
    更新记录2023年4月13日初始化。ExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html问题不停的拖动tab栏,会不断更新布局。Draggingthetabbarcontinuouslywillupdatethelayoutconstantly.解决办法进入ExtJS包,打开ux目录下的BoxReorderer.js文件,找......
  • 涨姿势了,有意思的气泡 Loading 效果
    今日,群友提问,如何实现这么一个Loading效果:这个确实有点意思,但是这是CSS能够完成的?没错,这个效果中的核心气泡效果,其实借助CSS中的滤镜,能够比较轻松的实现,就是所需的元素可能多点。参考我们之前的:使用纯CSS实现超酷炫的粘性气泡效果巧用CSS实现酷炫的充电动画圆弧......
  • js 判断是否为 IE 通过事件关闭新打开的浏览器窗口
    //必须通过target="_blank"打开新窗口才可关闭if(window.ActiveXObject||"ActiveXObject"inwindow){//iewindow.location.href="about:blank";//为兼容IE作此修改window.close();}else{wi......
  • vscode如何设置HTML/CSS/JS保存后自动格式化?
    具体操作:点击小齿轮,选择设置按钮  第二步:点击右上角按钮,进入设置页面  第三步:粘贴自动保存的js代码!  "editor.formatOnType":true,"editor.formatOnSave":true, ......
  • 好奇心驱使下试验了 chatGPT 的 js 代码的能力
    手边的项目中有个函数,主要实现图片分片裁剪功能。可以优化一下。也想看看chatGPT的代码理解能力,优化能力,实现能力,用例能力。于是有了这篇文章。实验结果总结:chatGPT确实强大,提供的答案可以借鉴,但不能完全依赖,需要你自行判断是否正确当你需要一个纯函数时,可以考虑使用。......