原生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代码片段收集
Jul 12 Javascript
jquery实现图片翻页效果
Dec 23 Javascript
js获取url中的参数且参数为中文时通过js解码
Mar 19 Javascript
jQuery基于当前元素进行下一步的遍历
May 20 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
Oct 16 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
Nov 30 Javascript
基于JS代码实现图片在页面中旋转效果
Jun 16 Javascript
JavaScript中最常见的三个面试题解析
Mar 04 Javascript
微信小程序 首页制作简单实例
Apr 07 Javascript
zTree异步加载展开第一级节点的实现方法
Sep 05 Javascript
ant design vue导航菜单与路由配置操作
Oct 28 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
jquery模拟按下回车实现代码
2011/09/20 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
cookie中的path与domain属性详解
2013/12/18 Javascript
js 通用订单代码
2013/12/23 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
js实现微博发布小功能
2017/01/12 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
利用python画出折线图
2018/07/26 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
应届生妇产科护士求职信
2013/10/27 职场文书
会计自荐书
2013/12/02 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
教师节倡议书
2014/08/30 职场文书
治庸问责心得体会
2014/09/12 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP