原生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 相关文章推荐
escape、encodeURI、encodeURIComponent等方法的区别比较
Dec 27 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
Sep 14 Javascript
SyntaxHighlighter语法高亮插件使用说明
Aug 14 Javascript
JSON传递bool类型数据的处理方式介绍
Sep 18 Javascript
js跨域问题浅析及解决方法优缺点对比
Nov 08 Javascript
javaScript实现滚动新闻的方法
Jul 30 Javascript
jQuery解决浏览器兼容性问题案例分析
Apr 15 Javascript
jQuery设计思想
Mar 07 Javascript
详解vue静态资源打包中的坑与解决方案
Feb 05 Javascript
mpvue跳转页面及注意事项
Aug 03 Javascript
vue中设置、获取、删除cookie的方法
Sep 21 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
PHP的博客ping服务代码
2012/02/04 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
python实现邮件自动发送
2019/08/10 Python
python 实现线程之间的通信示例
2020/02/14 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
Python Selenium库的基本使用教程
2021/01/04 Python
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
酒店司机岗位职责
2013/12/14 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
重阳节活动总结
2014/08/27 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
早读课迟到检讨书
2014/09/25 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书