javascript实现计时器的简单方法


Posted in Javascript onFebruary 21, 2016

计时器, 在生活当中也是用得频繁的功能, 比如锻炼身体, 跑步比赛等等相关的活动. 我们用Javascript来完成一个计时器.

计时器, 主要就是对时间的一个逻辑处理, 比如60秒等于1分钟, 60分钟等于一个小时, 我们这里只做到小时的处理. 就这么一个简单的逻辑, 然后动态的显示在一个Input里面.

javascript实现计时器的简单方法

那现在我们来完成这个界面

<label>计时:</label> 
<input type="text" name="" id="timer"/> 
<button onclick="pause(this)" id="pause" state="on">暂停</button>
<button onclick="restart()">重新开始</button>

给标签元素一个ID是为了获取其中的标签, 然后加入了两个点击事件, 计数器的暂停, 和重新开始事件.

首先我们来完成开始计时的处理, 开始计时主要还是是用了setInterval的方法, 其中每隔1秒执行一次方法, 这样我们就可以对时间做处理, 就像开头所说60秒等于1分钟..., 所以这里就需要用判断来处理, 最后就将其中的得到的秒,分,时显示到输入框里.

var ele_timer = document.getElementById("timer");
var n_sec = 0; //秒
var n_min = 0; //分
var n_hour = 0; //时

//60秒 === 1分
//60分 === 1小时
function timer() {
 return setInterval(function () {

 var str_sec = n_sec;
 var str_min = n_min;
 var str_hour = n_hour;
 if ( n_sec < 10) {
  str_sec = "0" + n_sec;
 }
 if ( n_min < 10 ) {
  str_min = "0" + n_min;
 }

 if ( n_hour < 10 ) {
  str_hour = "0" + n_hour;
 }

 var time = str_hour + ":" + str_min + ":" + str_sec;
 ele_timer.value = time;
 n_sec++;
 if (n_sec > 59){
  n_sec = 0;
  n_min++;
 }
 if (n_min > 59) {
  n_sec = 0;
  n_hour++;
 }


 }, 1000);
}

var n_timer = timer();

我们用timer方法包装setInterval方法是为了,后面暂停和重新开始做处理.
用户点击了暂停, 计时器就停止计时, 用户继续点击这个按钮, 计时器继续计时. 所以这里有一个状态需要控制,这个状态我们给这个按钮一个属性.

//暂停和继续
function pause(self) {
 var state = self.getAttribute("state");
 if (state === "on") {
  clearInterval(n_timer);
  self.textContent = "继续";
  self.setAttribute("state", "off");
 } else {
  n_timer = timer();
  self.textContent = "暂停";
  self.setAttribute("state", "on");
 }
}

最后我们来看一下重新开始, 重新开始事件就更加简单了. 将计数器清0, 然后改变暂停按钮初始状态.

function restart() {
 clearInterval(n_timer);
 n_sec = 0;
 n_min = 0;
 n_hour = 0;
 n_timer = timer();

 var ele_pause = document.getElementById("pause");
 ele_pause.textContent = "暂停";
 ele_pause.setAttribute("state", "on");
}

这样就完成了计时的功能.效果如下

javascript实现计时器的简单方法

希望本文所述对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
JS实现打开本地文件或文件夹
Mar 09 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
Sep 25 Javascript
弹出最简单的模式化遮罩层的js代码
Dec 04 Javascript
node.js实现多图片上传实例
Jun 03 Javascript
AngularJS基础 ng-include 指令示例讲解
Aug 01 Javascript
Javascript发送AJAX请求实例代码
Aug 21 Javascript
vue分类筛选filter方法简单实例
Mar 30 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
layui分页效果实现代码
May 19 Javascript
JS脚本加载后执行相应回调函数的操作方法
Feb 28 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
Sep 07 Javascript
Ant Design的可编辑Tree的实现操作
Oct 31 Javascript
JS中Eval解析JSON字符串的一个小问题
Feb 21 #Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
Feb 21 #Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
Feb 21 #Javascript
全面详细的jQuery常见开发技巧手册
Feb 21 #Javascript
完善的jquery处理机制
Feb 21 #Javascript
jquery对象和DOM对象的任意相互转换
Feb 21 #Javascript
jQuery实现div拖拽效果实例分析
Feb 20 #Javascript
You might like
星际争霸中的对战模式介绍
2020/03/04 星际争霸
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
use jscript List Installed Software
2007/06/11 Javascript
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
layui动态渲染生成select的option值方法
2019/09/23 Javascript
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
如何使用python代码操作git代码
2020/02/29 Python
python中可以声明变量类型吗
2020/06/18 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
python 实现有道翻译功能
2021/02/26 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
化学教师自荐信范文
2013/12/28 职场文书
班组长岗位职责范本
2014/01/05 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
Java存储没有重复元素的数组
2022/04/29 Java/Android