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 相关文章推荐
offsetHeight在OnLoad中获取为0的现象
Jul 22 Javascript
Javascript中的String对象详谈
Mar 03 Javascript
javascript实现随时变化着的背景颜色
Apr 02 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
Sep 27 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
Dec 25 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
May 02 Javascript
vue params、query传参使用详解
Sep 12 Javascript
Vue Promise的axios请求封装详解
Aug 13 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
Nov 23 Javascript
跟混乱的页面弹窗说再见
Apr 11 Javascript
vue2路由基本用法实例分析
Mar 06 Javascript
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
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脚本的10个技巧(2)
2006/10/09 PHP
PHP 面向对象 final类与final方法
2010/05/05 PHP
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
Python创建文件和追加文件内容实例
2014/10/21 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
Python二维码生成识别实例详解
2019/07/16 Python
Python面向对象之Web静态服务器
2019/09/03 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Python爬虫解析网页的4种方式实例及原理解析
2019/12/30 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
运动会致辞稿50字
2014/02/04 职场文书
团队精神口号
2014/06/06 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL