JavaScript使用setTimeout实现倒计时效果


Posted in Javascript onFebruary 19, 2021

为了加强对JavaScript原生代码的编写能力,以及巩固setTimeout()的使用方法,制作了一个倒计时的demo,倒计时在现在的网站中算是一个常见的小功能,如果大家喜欢的话可以留下,就当作一个日常实用的小脚本。

实现思路

1、先获取小时值 将小时值减1开始进行倒计时 分钟59 秒数59
2、秒数的个位从9开始递减,当秒数个位小于0时,秒数的十位减1
3、秒数的十位小于0时,分钟的个位减1
4、分钟的个位小于0时,分钟的十位减1
5、分钟的十位小于0时,小时减1
6、小时数小于0后停止计时全部为0

实现代码

html

<p>倒计时:</p>
<span id="hour">5</span>
<span>:</span>
<span id="minuteTen">0</span>
<span id="minuteBit">0</span>
<span>:</span>
<span id="secondTen">0</span>
<span id="secondBit">0</span>

css

span{
 display: inline-block;
 width: 20px;
 height: 20px;
 background-color: #000000;
 color: #ffffff;
 text-align: center;
 }

JavaScript

function time(){
 /*小时*/
 var hourTxt = document.getElementById("hour");
 var hour = parseInt(document.getElementById("hour").innerHTML);
 /*分钟*/
 var minuteTenTxt = document.getElementById("minuteTen");
 var minuteBitTxt = document.getElementById("minuteBit");
 var minuteTen = parseInt(document.getElementById("minuteTen").innerHTML);
 var minuteBit = parseInt(document.getElementById("minuteBit").innerHTML);
 /*秒*/
 var secondTenTxt = document.getElementById("secondTen");
 var secondBitTxt = document.getElementById("secondBit");
 var secondTen = parseInt(document.getElementById("secondTen").innerHTML);
 var secondBit = parseInt(document.getElementById("secondBit").innerHTML);
 function start(){
 hour--;
 hourTxt.innerHTML = hour;
 minuteTen = 5;
 minuteTenTxt.innerHTML = minuteTen;
 minuteBit = 9;
 minuteBitTxt.innerHTML = minuteBit;
 secondTen = 5;
 secondTenTxt.innerHTML = secondTen;
 secondBit = 9;
 secondBitTxt.innerHTML = secondBit;

 /*secondBit开始自减*/
 function second(){
  secondBit--;
  secondBitTxt.innerHTML = secondBit;

  /*十秒过后*/
  if(secondBit < 0){
  secondTen--;
  secondTenTxt.innerHTML = secondTen;
  secondBit = 9;
  secondBitTxt.innerHTML = secondBit;
  /*继续倒计时*/
  setTimeout(second,1000);

  /*一分钟过后*/
  if(secondTen < 0){
   minuteBit--;
   minuteBitTxt.innerHTML = minuteBit;
   secondTen = 5;
   secondTenTxt.innerHTML = secondTen;
   secondBit = 9;
   secondBitTxt.innerHTML = secondBit;

   /*十分钟过后*/
   if(minuteBit < 0){
   minuteTen--;
   minuteTenTxt.innerHTML = minuteTen;
   minuteBit = 9;
   minuteBitTxt.innerHTML = minuteBit;
   }

   /*一个小时过后*/
   if(minuteTen < 0){
   hour--;
   hourTxt.innerHTML = hour;
   minuteTen = 5;
   minuteTenTxt.innerHTML = minuteTen;
   minuteBit = 9;
   minuteBitTxt.innerHTML = minuteBit;
   secondTen = 5;
   secondTenTxt.innerHTML = secondTen;
   secondBit = 9;
   secondBitTxt.innerHTML = secondBit;
   }

   /*倒计时结束*/
   if(hour < 0 ){
   hour = 0;
   hourTxt.innerHTML = hour;
   minuteTen = 0;
   minuteTenTxt.innerHTML = minuteTen;
   minuteBit = 0;
   minuteBitTxt.innerHTML = minuteBit;
   secondTen = 0;
   secondTenTxt.innerHTML = secondTen;
   secondBit = 0;
   secondBitTxt.innerHTML = secondBit;
   clearTimeout(second);
   clearTimeout(start);
   }
  }
  }else{
  setTimeout(second,1000);
  }
 }
 setTimeout(second,1000);

 }
 setTimeout(start,1000);
}

执行页面

JavaScript使用setTimeout实现倒计时效果

结束页面

JavaScript使用setTimeout实现倒计时效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
地震发生中逃生十大法则
May 12 Javascript
面向对象的javascript(笔记)
Oct 06 Javascript
js 学习笔记(三)
Dec 29 Javascript
jQuery $.data()方法使用注意细节
Dec 31 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
Apr 11 Javascript
select多选 multiple的使用示例
Jun 16 Javascript
用队列模拟jquery的动画算法实例
Jan 20 Javascript
js获取字符串字节数方法小结
Jun 09 Javascript
jquery+php实现滚动的数字特效
Nov 29 Javascript
js实现的万能flv网页播放器代码
Apr 30 Javascript
Vue.js中数据绑定的语法教程
Jun 02 Javascript
详解express + mock让前后台并行开发
Jun 06 Javascript
react项目从新建到部署的实现示例
Feb 19 #Javascript
原生JavaScript实现幻灯片效果
Feb 19 #Javascript
JavaScript 实现继承的几种方式
Feb 19 #Javascript
JavaScript 生成唯一ID的几种方式
Feb 19 #Javascript
JavaScript实现打字游戏
Feb 19 #Javascript
JS+CSS实现动态时钟
Feb 19 #Javascript
js动态添加带圆圈序号列表的实例代码
Feb 18 #Javascript
You might like
php自定义hash函数实例
2015/05/05 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
Python Deque 模块使用详解
2014/07/04 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
Python流程控制语句的深入讲解
2020/06/15 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
护士节策划方案
2014/05/19 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
小王子读书笔记
2015/06/29 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL
Vue的过滤器你真了解吗
2022/02/24 Vue.js
浅谈Vue的computed计算属性
2022/03/21 Vue.js