JS实现根据用户输入分钟进行倒计时功能


Posted in Javascript onNovember 14, 2016

废话不多说了,直接给大家贴代码了。具体代码如下所示:

其实这倒计时之前有接触过很多,只是用的都是别人的源码。
应项目需求,终于认真一回,把一个自己看似很简单的问题,终于耗上了跨度一个星期的时间,才弄出来。
源码直接复制黏贴可用。

冗余版+简化版。

<!DOCTYPE html> 
<html lang="en"> 
  <head> 
    <meta charset="utf-8"> 
  <title></title> 
 </head> <body> 
  <script type="text/javascript"> 
    var createTime = '2016-11-14 10:20:00';//开始时间 
    var limitTimes = 10;//时间长度 
    // 倒计时 入口 
    countdowns = window.setInterval(function(){ 
      var arr = cutDoowns(limitTimes,createTime); 
      document.write(formatDate(arr[0])+':'+formatDate(arr[1])+':'+formatDate(arr[2])+'</br>'); 
      if(arr[2]){ 
        document.write('时间到!'); 
      } 
    },1000); 
 
    /* 
      s,10分钟后的具体日期: 
      date,开始时间 
      然后转化成毫秒比较,所得的差值化成分秒,就是倒计时的分秒。 
     */ 
    function cutDoowns(s,date){ 
      console.log(''); 
      var flag = false; 
      var arr = [];//arr[0]:分,arr[1]:秒,arr[2]:返回boolean 
      var now = new Date();//当前时间 
      var now1 = new Date(date);//开始时间 
      console.log('开始时间 now1: '+now1); 
      now1.setMinutes(now1.getMinutes()+s);//10分钟后的时间 
      console.log('当前时间 now :'+now); 
      console.log('10分钟时 now1:'+now1); 
 
      // 转化成年月日 时分秒 格式 
      var n = now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDay()+' '+now.getHours()+':'+now.getMinutes()+':'+now.getSeconds(); 
      var n1 = now1.getFullYear()+'/'+(now1.getMonth()+1)+'/'+now1.getDay()+' '+now1.getHours()+':'+now1.getMinutes()+':'+now1.getSeconds(); 
      // 日期转化成毫秒 
      var time1 = (new Date(n)).getTime(); 
      var time2 = (new Date(n1)).getTime(); 
      // 毫秒转日期格式 
      var time11 = new Date(time1); 
      var time21 = new Date(time2); 
      console.log('当前时间:'+n+',转化成毫秒:'+time1+',time11:'+time11); 
      console.log('10分钟时:'+n1+',转化成毫秒:'+time2+',time21:'+time21); 
 
      var surplusSec = time2-time1;//距离解锁剩余毫秒 
 
      if(surplusSec<=0){ 
        clearInterval(countdowns); 
        flag = true; 
        return arr = [00,00,flag]; 
      } 
 
      var minute = Math.floor(surplusSec/1000/60);//分钟 
      var second = Math.floor((surplusSec-minute*60*1000)/1000);//剩余秒数 
      console.log('剩余时间,minute: '+minute+',second: '+second+',surplusSec:'+surplusSec); 
      // var second = Math.round(surplusTimes);//秒数 
      console.log('剩余时间,minute: '+minute+',second: '+second+',surplusSec:'+surplusSec); 
 
      arr = [minute,second,flag]; 
      return arr; 
    } 
 
    //格式化日期:把单字符转成双字符 
    function formatDate(n){ 
      n = n.toString(); 
      // console.log(n); 
      if(n.length<=1){ 
        n = '0'+n; 
      } 
      // console.log(n); 
      return n; 
    } 
  </script> 
  </body> 
</html>

简化版本:

<!DOCTYPE html> 
<html lang="en"> 
  <head> 
    <meta charset="utf-8"> 
    <title>打开调试工具,看效果!</title> 
  </head> 
  <body> 
 
  <script type="text/javascript"> 
    /* 
      打开调试工具,看效果! 
      思路: 
      1.设置一个倒计时的时间长度; 
      2.设置开始时间和当前时间; 
      3.结束时间是 开始时间+倒计时间; 
      4.结束毫秒-开始毫秒=剩余倒计时间。 
     */ 
     
    // 准备 
    var countdownMinute = 10;//10分钟倒计时 
    var startTimes = new Date('2016-11-16 15:55');//开始时间 new Date('2016-11-16 15:21'); 
    var endTimes = new Date(startTimes.setMinutes(startTimes.getMinutes()+countdownMinute));//结束时间 
    var curTimes = new Date();//当前时间 
    var surplusTimes = endTimes.getTime()/1000 - curTimes.getTime()/1000;//结束毫秒-开始毫秒=剩余倒计时间 
     
    // 进入倒计时 
    countdowns = window.setInterval(function(){ 
      surplusTimes--; 
      var minu = Math.floor(surplusTimes/60); 
      var secd = Math.round(surplusTimes%60); 
      console.log(minu+':'+secd); 
      if(surplusTimes<=0){ 
        console.log('时间到!'); 
        clearInterval(countdowns); 
      } 
    },1000); 
 
 
  </script> 
  </body> 
</html>

以上所述是小编给大家介绍的JS实现根据用户输入分钟进行倒计时功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
基于逻辑运算的简单权限系统(实现) JS 版
Mar 24 Javascript
js操作二级联动实现代码
Jul 27 Javascript
JavaScript实现快速排序(自已编写)
Dec 19 Javascript
在JavaScript中实现类的方式探讨
Aug 28 Javascript
javascript使用正则表达式实现去掉空格之后的字符
Feb 15 Javascript
JS实现超简单的仿QQ折叠菜单效果
Sep 21 Javascript
解决wx.onMenuShareTimeline出现的问题
Aug 16 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
Oct 31 Javascript
Js apply方法详解
Feb 16 Javascript
微信小程序自定义select下拉选项框组件的实现代码
Aug 28 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
Sep 13 Javascript
uni-app 自定义底部导航栏的实现
Dec 11 Javascript
js调用屏幕宽度的简单方法
Nov 14 #Javascript
jquery心形点赞关注效果的简单实现
Nov 14 #Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 #Javascript
9个让JavaScript调试更简单的Console命令
Nov 14 #Javascript
Node.js中路径处理模块path详解
Nov 14 #Javascript
JavaScript队列、优先队列与循环队列
Nov 14 #Javascript
JavaScript中setTimeout的那些事儿
Nov 14 #Javascript
You might like
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
js实现一键复制功能
2017/03/16 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
小程序tab页无法传递参数的方法
2018/08/03 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
实例讲解v-if和v-show的区别
2019/01/31 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
python私有属性和方法实例分析
2015/01/15 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
单位创先争优活动方案
2014/01/26 职场文书
毕业生应聘求职信
2014/07/10 职场文书
环保志愿者活动方案
2014/08/14 职场文书
中小企业员工手册范本
2015/05/14 职场文书
致运动员加油稿
2015/07/21 职场文书
运动会运动员赞词
2015/07/22 职场文书
庭外和解协议书
2016/03/23 职场文书
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
Vue如何清空对象
2022/03/03 Vue.js
Python采集壁纸并实现炫轮播
2022/04/30 Python
字节飞书面试promise.all实现示例
2022/06/16 Javascript