原生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如何防止这种冒泡事件发生
Feb 27 Javascript
node.js插件nodeclipse安装图文教程
Oct 19 Javascript
javascript js 操作数组 增删改查的简单实现
Jun 20 Javascript
Angularjs结合Bootstrap制作的一个TODO List
Aug 18 Javascript
jQuery表单对象属性过滤选择器实例详解
Sep 13 Javascript
JS实现图片居中悬浮效果
Dec 25 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 Javascript
mocha的时序规则讲解
Feb 16 Javascript
JS中的模糊查询功能
Dec 08 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
May 01 Javascript
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 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+javascript的日历控件
2009/11/19 PHP
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
Python程序设计入门(4)模块和包
2014/06/16 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
Python实现完整的事务操作示例
2017/06/20 Python
python放大图片和画方格实现算法
2018/03/30 Python
python mysql断开重连的实现方法
2019/07/26 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
Django视图扩展类知识点详解
2019/10/25 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
Python colormap库的安装和使用详情
2020/10/06 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
佳能英国官方网站:Canon UK
2017/08/08 全球购物
文员自我评价怎么写
2013/09/19 职场文书
银行实习自我鉴定
2013/10/12 职场文书
美德好少年事迹材料
2014/01/19 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
优秀员工演讲稿
2014/05/19 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书