原生js 秒表实现代码


Posted in Javascript onJuly 24, 2012

html代码:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<meta charset="gb2312"> 
<head> 
<style type="text/css"> 
#container { 
margin:0 auto; 
margin-top:10%; 
width:200px; 
} 
#timer { 
border:red double 1px; 
width:180px; 
height:76px; 
line-height:76px; 
font-size:32pt; 
color:green; 
} 
input { 
width:87px; 
} 
</style> 
</head> 
<body onload="init()"> 
<div id="container"> 
<div id="timer"></div> 
<input type="button" id="ctrl" /> 
<input type="reset" onclick="init()" /> 
</div> 
</body> 
</html>

js代码:
/* 
*@author:hyjiacan 
*date:15:57 2010-9-5 
*name:timer 
*/ 
var ctrl = document.getElementById("ctrl"); //控制按钮对象 
var timer = document.getElementById("timer"); //时间显示对象 
var hour, minute, second; //时,分 ,钞 
var t; //setTimeout方法 
//初始化显示和按钮 
var init = function(){ 
timer.innerHTML = "00:00:00"; //由于FF不支持使用innerText,故采用innerHTML 
hour = minute = second = 0; //初始化显示 
ctrl.setAttribute("value", "开始"); //初始化控制按钮文字 
ctrl.setAttribute("onclick", "startit()"); //初始化控制按钮事件 
clearTimeout(t); 
} 
//开始计时 
function startit(){ 
t = setTimeout("startit()", 1000); //每隔1秒(1000毫秒)递归调用一次 
second++; 
if(second>=60){ //判断秒是否到60, 是则进位 
second = 0; 
minute++; 
} 
if(minute>=60){ //判断分是否到60, 是则进位 
minute = 0; 
hour++; 
} 
timer.innerHTML = j(hour) + ":" + j(minute) + ":" + j(second) ; //更新显示 
//更改按钮状态 
ctrl.setAttribute("value", "暂停/停止"); //更改按钮文字 
ctrl.setAttribute("onclick", "pause()"); //更改按钮触发事件 
} 
//显示数字填补,即当显示的值为0-9时,在前面填补0;如:1:0:4, 则填补成为 01:00:04 
var j = function(arg){ 
return arg>=10 ? arg : "0" + arg; 
} 
//暂停计时 
var pause = function(){ 
clearTimeout(t); 
ctrl.setAttribute("onclick", "startit()"); 
ctrl.setAttribute("value", "继续"); 
}

使用setTimeout递归处理。 在这之中,有一个很重要的问题——延迟,这样的做法和系统CPU资源有很大关系,而且函数的调用也要耗费时间,最终就导致计数的误差越来越大。

还有另一个方法:

在按下开始按钮的时候,记录下按下的时间(毫秒),然后每隔1秒读取一次当前时间,再用当前时间减去按下时记下的时间,算出经过了的时间。

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(5)
Dec 23 Javascript
JavaScript 继承详解 第一篇
Aug 30 Javascript
基于jquery的图片懒加载js
Jun 30 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
jQuery实现的图片分组切换焦点图插件
Jan 06 Javascript
easyui tree带checkbox实现单选的简单实例
Nov 07 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 jQuery
vue router 用户登陆功能的实例代码
Apr 24 Javascript
javascript 内存模型实例详解
Apr 18 Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
javascript设计模式 接口介绍
Jul 24 #Javascript
javascript设计模式 封装和信息隐藏(上)
Jul 24 #Javascript
js+xml生成级联下拉框代码
Jul 24 #Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
Jul 24 #Javascript
基于jquery的跟随屏幕滚动代码
Jul 24 #Javascript
基于JQuery的类似新浪微博展示信息效果的代码
Jul 23 #Javascript
基于jquery自定义图片热区效果
Jul 21 #Javascript
You might like
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
Python yield 使用浅析
2015/05/28 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
python绘制封闭多边形教程
2020/02/18 Python
Python之变量类型和if判断方式
2020/05/05 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
详解px单位html5响应式方案
2018/03/08 HTML / CSS
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
医学生自我鉴定范文
2013/11/08 职场文书
优良学风班总结材料
2014/02/08 职场文书
《学会合作》教学反思
2014/04/12 职场文书
英语导游词
2015/02/13 职场文书
网络妈妈观后感
2015/06/08 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python