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 相关文章推荐
利用js动态添加删除table行的示例代码
Dec 16 Javascript
jQuery遍历Table应用示例
Apr 09 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
javascript实现给定半径求出圆的面积
Jun 26 Javascript
JavaScript数据类型判定的总结笔记
Jul 31 Javascript
jQuery中的一些小技巧
Jan 18 Javascript
Vue单文件组件基础模板小结
Aug 10 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 Javascript
Node.js之readline模块的使用详解
Mar 25 Javascript
Layui 动态禁止select下拉的例子
Sep 03 Javascript
微信小程序scroll-view点击项自动居中效果的实现
Mar 25 Javascript
Vue 禁用浏览器的前进后退操作
Sep 04 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函数scandir排除特定目录
2014/06/12 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
幼儿园运动会入场词
2014/02/10 职场文书
《与朱元思书》的教学反思
2014/04/17 职场文书
普宁寺导游词
2015/02/04 职场文书
婚宴新娘致辞
2015/07/28 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android