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秒读取一次当前时间,再用当前时间减去按下时记下的时间,算出经过了的时间。
复制代码 代码如下:
<!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秒读取一次当前时间,再用当前时间减去按下时记下的时间,算出经过了的时间。
标签:
js,秒表
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
狼山资源网 Copyright www.pvsay.com
暂无“原生js 秒表实现代码”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。