原生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实现网页图片等比例缩放实现代码及调用方式
Feb 25 Javascript
jQuery实现网站添加高亮突出显示效果的方法
Jun 26 Javascript
通用javascript代码判断版本号是否在版本范围之间
Nov 29 Javascript
20分钟轻松创建自己的Bootstrap站点
May 12 Javascript
详解Angular中$cacheFactory缓存的使用
Aug 19 Javascript
js内置对象处理_打印学生成绩单的简单实现
Sep 24 Javascript
jQuery选择器实例应用
Jan 05 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
Mar 06 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
Apr 28 Javascript
创建echart多个联动的示例代码
Nov 23 Javascript
js实现简单的秒表
Jan 16 Javascript
es6函数之箭头函数用法实例详解
Apr 25 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学习之运算符相关概念
2011/06/09 PHP
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
Yii2中datetime类的使用
2016/12/17 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
jQuery实现单击和鼠标感应事件
2015/02/01 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Python实现简单字典树的方法
2016/04/29 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
python 一维二维插值实例
2020/04/22 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
校运会入场式解说词
2014/02/10 职场文书
论文诚信承诺书
2014/05/23 职场文书
2014年社区工作总结
2014/11/18 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang