Javascript 如何使用js解决秒表错误?
我正在尝试制作一个java脚本计时器。但我面临一些简单的问题。第一个问题是当我开始计时时,它在第二部分以1开始,但我想以01开始。分钟部分也有同样的问题。分钟部分还有另一个问题是,在得到数字59后,小时并没有增加 这是我的js代码行Javascript 如何使用js解决秒表错误?,javascript,html,timer,Javascript,Html,Timer,我正在尝试制作一个java脚本计时器。但我面临一些简单的问题。第一个问题是当我开始计时时,它在第二部分以1开始,但我想以01开始。分钟部分也有同样的问题。分钟部分还有另一个问题是,在得到数字59后,小时并没有增加 这是我的js代码行 var digit=00; var hrs = 00; var min=00; var time; var timer_is_on=0; function timer(){ document.getElementById("secs").innerHTML
var digit=00;
var hrs = 00;
var min=00;
var time;
var timer_is_on=0;
function timer(){
document.getElementById("secs").innerHTML=digit;
digit=digit+1;
digit = parseInt(digit);
time=setTimeout("timer()",1000);
if(digit>"59"){
min=parseInt(min)+1;
var count = min.toString().length;
document.getElementById("mins").innerHTML=min;
digit=0;
}
if(digit>"59"){
hrs=parseInt(hrs)+1
document.getElementById("hrs").innerHTML=hrs;
digit=0;
}
}
function activate(){
if(!timer_is_on){
timer_is_on=1;
timer();
}
}
以下是我的HTML代码:
<a href="#" onclick="activate()">Click here to start the timer</a>
<span id="hrs" >00</span>:<span id="mins" >00</span>:<span id="secs">00</span>
我的工作演示在这里:
我还需要通过单击相同的开始按钮来设置停止时间。有什么想法吗?这是解决方案
它也会停止手表。
有一个问题是,您必须使用min而不是digit来更新小时数。代码中存在一些问题。试试这个。还添加了评论
var digit=0;
var hrs = 0;
var min=0;
var time;
var timer_is_on=0;
function timer(){
//[Old] - this should be placed after you increment digit
// document.getElementById("secs").innerHTML = digit
//[New]
// get the numerical value for seconds,minutes,hours
digit = parseInt(document.getElementById("secs").innerHTML);
min = parseInt(document.getElementById("mins").innerHTML);
hrs = parseInt(document.getElementById("hrs").innerHTML);
// increment;
digit=digit+1;
if(digit>"59"){
min = parseInt(min)+1;
// why is this code here
var count = min.toString().length;
digit=0;
}
// [old] checking if second is greater than 59 and incrementing hours
// if(digit>"59"){
// [new] check if minute is greater than 59
if(min > "59"){
hrs=parseInt(hrs)+1;
digit=0;
min=0; // minute should be reset as well
}
// set the values after all processing is done
document.getElementById("secs").innerHTML = format(digit);
document.getElementById("mins").innerHTML= format(min);
document.getElementById("hrs").innerHTML=format(hrs);
}
function activate(){
if(!timer_is_on){
timer_is_on=1;
// time = setTimeout("timer()",1000) will only call it once , use setInterval instead
time=setInterval("timer()",1000);
}
else {
timer_is_on=0;
clearInterval(time); // clear the timer when the user presses the button again and reset timer_is_on
}
}
// left pad zero if it is less than 9
function format(time){
if(time > 9)
return time;
else return "0"+time;
}
其工作不正常。请将setinterval值从1000增加到100012233445768788796564545454545343423323224354568778787878787,然后在59分钟后查看输出。小时部分工作不正常其工作正常,但我可以将其放置在多个锚标记中,假设我有两个锚标记来显示时钟。在这种情况下,如果我单击了第二个,第一个将停止,第二个将从0开始计时。我该怎么做?知道吗@用户63363是的,你可以。您也可以使用相同的功能,但必须进行修改。你需要重置以小时、分钟和秒为单位的值。如果答案正确,请将其标记为正确答案。你可以为我提供多个锚的计时器吗?请,这将对我有很大帮助。谢谢
var digit=0;
var hrs = 0;
var min=0;
var time;
var timer_is_on=0;
function timer(){
//[Old] - this should be placed after you increment digit
// document.getElementById("secs").innerHTML = digit
//[New]
// get the numerical value for seconds,minutes,hours
digit = parseInt(document.getElementById("secs").innerHTML);
min = parseInt(document.getElementById("mins").innerHTML);
hrs = parseInt(document.getElementById("hrs").innerHTML);
// increment;
digit=digit+1;
if(digit>"59"){
min = parseInt(min)+1;
// why is this code here
var count = min.toString().length;
digit=0;
}
// [old] checking if second is greater than 59 and incrementing hours
// if(digit>"59"){
// [new] check if minute is greater than 59
if(min > "59"){
hrs=parseInt(hrs)+1;
digit=0;
min=0; // minute should be reset as well
}
// set the values after all processing is done
document.getElementById("secs").innerHTML = format(digit);
document.getElementById("mins").innerHTML= format(min);
document.getElementById("hrs").innerHTML=format(hrs);
}
function activate(){
if(!timer_is_on){
timer_is_on=1;
// time = setTimeout("timer()",1000) will only call it once , use setInterval instead
time=setInterval("timer()",1000);
}
else {
timer_is_on=0;
clearInterval(time); // clear the timer when the user presses the button again and reset timer_is_on
}
}
// left pad zero if it is less than 9
function format(time){
if(time > 9)
return time;
else return "0"+time;
}