Javascript 如何使用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

我正在尝试制作一个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=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;
    }