Javascript JS函数秒表应用程序混淆了用户

Javascript JS函数秒表应用程序混淆了用户,javascript,Javascript,我编写了一个javascript应用程序,但最终我完全弄糊涂了。这个js应用程序需要在分、秒和百分之一百秒的时间内运行。这个混乱的部分是在秒表显示的时候,在这个例子中是03:196:03。这是我的困惑。当秒表显示196时,它显示的是百分之一秒吗?是否有人可以检查我的功能,并告诉我在功能错误的情况下需要纠正哪些部分 <html> <head> <title>my example</title> <script type="tex

我编写了一个javascript应用程序,但最终我完全弄糊涂了。这个js应用程序需要在分、秒和百分之一百秒的时间内运行。这个混乱的部分是在秒表显示的时候,在这个例子中是03:196:03。这是我的困惑。当秒表显示196时,它显示的是百分之一秒吗?是否有人可以检查我的功能,并告诉我在功能错误的情况下需要纠正哪些部分

<html>
<head>
    <title>my example</title>
    <script type="text/javascript">
            //Stopwatch
    var time = 0;
    var started;
    var run = 0;
    function startWatch() {
        if (run == 0) {
            run = 1;
            timeIncrement();
            document.getElementById("countDown").disabled = true;
            document.getElementById("resetCountDown").disabled = true;
            document.getElementById("start").innerHTML = "Stop";
        } else {
            run = 0;
            document.getElementById("start").innerHTML = "Resume";
        }
    }//End function startWatch
    function watchReset() {
        run = 0;
        time = 0;
        document.getElementById("start").innerHTML = "Start";
        document.getElementById("output").innerHTML = "00:00:00";
        document.getElementById("countDown").disabled = false;
        document.getElementById("resetCountDown").disabled = false;
    }//End function watchReset
    function timeIncrement() {
        if (run == 1) {
            setTimeout(function () {
                time++;
                var min = Math.floor(time/10/60);
                var sec = Math.floor(time/10);
                var tenth = time % 10;

                if (min < 10) {
                    min = "0" + min;
                }
                if (sec <10) {
                    sec = "0" + sec;
                } else if (sec>59) {
                    var sec;
                }
                document.getElementById("output").innerHTML = min + ":" + sec + ":0" + tenth;
                timeIncrement();
            },10);
        }
    } // end function timeIncrem
    function formatNumber(n){
        return n > 9 ? "" + n: "0" + n;
    }


    </script>
</head>
<body>
    <h1>Stopwatch</h1>
    <p id="output"></p>
    <div id="controls">
        <button type="button" id ="start" onclick="startWatch();">Start</button>
        <button type="button" id ="reset" onclick="watchReset();">Reset</button>
    </div>
</body>
</html>

你的代码太奇怪了

首先,您将document.getElementById用于不存在的元素:可能它们属于您的原始代码,而您的代码并没有完整发布

那我不明白你的计时方法:

每10毫秒启动一次timeIncrement:因此time/10给出了毫秒数 但是你计算分钟和秒,就好像它是秒数一样! 从那以后,一切都错了

无论如何,您可以使用Date对象的GetMillimess函数来简化这一切。

试试以下方法:

document.getElementByIdoutput.innerHTML=[ Math.floortime/100/60%60, Math.floortime/100%60, 时间%100 ].mapformatNumber.join':' var时间=0; var启动; var-run=0; 函数startWatch{ 如果运行==0{ run=1; 时间增量; }否则{ run=0; } } 功能表复位{ run=0; 时间=0; document.getElementByIdoutput.innerHTML=00:00:00; } 函数时间增量{ 如果运行==1{ setTimeoutfunction{ 时间++; document.getElementByIdoutput.innerHTML=[ Math.floortime/100/60%60, Math.floortime/100%60, 时间%100 ].mapformatNumber.join':' 时间增量; },10; } } 函数formatNumbern{ 返回n<10?0:+n; } startWatch
试着把这个问题发到网上怎么样。我今天才知道,这是针对这样的问题。@3abjari这个问题是关于更改代码的功能,而这些功能不属于代码评审。代码审查是为了清理代码,以便以更好的方式完成同样的事情。谢谢@SimonAndréForsbergy您可能需要sec-=60*min或一些模数运算。您是否尝试过将代码煮沸到最低限度?这将使回答您的问题更容易,您甚至可以在这个过程中自己找到答案。