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 相关文章推荐
jquery插件jbox使用iframe关闭问题
Feb 09 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
Apr 29 Javascript
js读取被点击次数的简单实例(从数据库中读取)
Mar 07 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
JavaScript显示当前文档最后修改日期的方法
Mar 19 Javascript
原生js实现class的添加和删除简单代码
Jul 12 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
jquery实现一个全局计时器(商城可用)
Jun 30 jQuery
vue生成token保存在客户端localStorage中的方法
Oct 25 Javascript
vue实现图片加载完成前的loading组件方法
Feb 05 Javascript
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
教你使用vscode 搭建react-native开发环境
Jul 07 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
PHP 进程锁定问题分析研究
2009/11/24 PHP
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
JavaScript 事件系统
2010/07/22 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
没编程基础可以学python吗
2020/06/17 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
营销主管自我评价怎么写
2013/09/19 职场文书
医学实习生自我鉴定
2013/12/12 职场文书
医药代表个人求职信范本
2013/12/19 职场文书
小学生期末评语
2014/04/21 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
2016小学新学期寄语
2015/12/04 职场文书