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 相关文章推荐
javascript动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
为JavaScript添加重载函数的辅助方法
Jul 04 Javascript
js过滤数组重复元素的方法
Sep 05 Javascript
Jquery下判断Id是否存在的代码
Jan 06 Javascript
Jquery 一次处理多个ajax请求的代码
Sep 02 Javascript
jquery连缀语法如何实现
Nov 29 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
将json转换成struts参数的方法
Nov 08 Javascript
超全面的vue.js使用总结
Feb 12 Javascript
p5.js入门教程之平滑过渡(Easing)
Mar 16 Javascript
node.js实现上传文件功能
Jul 15 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
Apr 28 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连接MySQL代码的参数说明
2008/06/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
PHP数组实例详解
2016/06/26 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
JS小框架 fly javascript framework
2009/11/26 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
Python从单元素字典中获取key和value的实例
2018/12/31 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
Python调用飞书发送消息的示例
2020/11/10 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
教师自我反思材料
2014/02/14 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
青年教师听课心得体会
2016/01/15 职场文书
银行求职信范文
2019/05/13 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书