原生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 相关文章推荐
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
Nov 30 Javascript
js+canvas绘制矩形的方法
Jan 28 Javascript
简单实现js无缝滚动效果
Feb 05 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
Nov 17 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
Jan 25 jQuery
详解vue移动端项目的适配(以mint-ui为例)
Aug 17 Javascript
解决vue中虚拟dom,无法实时更新的问题
Sep 15 Javascript
详解原生JS动态添加和删除类
Mar 26 Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 Javascript
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
详解ES6 扩展运算符的使用与注意事项
Nov 12 Javascript
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
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
利用Python写一个爬妹子的爬虫
2018/06/08 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
数字化校园建设方案
2014/05/03 职场文书
个人党性分析材料
2014/12/19 职场文书
初三语文教学计划
2015/01/22 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
银行服务理念口号
2015/12/25 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
JavaScript中isPrototypeOf函数
2021/11/07 Javascript