Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试创建秒表时失败了_Javascript_Stopwatch - Fatal编程技术网

Javascript 尝试创建秒表时失败了

Javascript 尝试创建秒表时失败了,javascript,stopwatch,Javascript,Stopwatch,我正在尝试自增强JavaScript,在用秒表做一些文本时,我陷入了这个问题。它在工作,但总是在95:34:47开始,而不是00:00:00 这就是我到目前为止所尝试的 <script> /*Timer Stuff*/ function pad(num, size) { var s = "0000" + num; return s.substr(s.length - size);

我正在尝试自增强JavaScript,在用秒表做一些文本时,我陷入了这个问题。它在工作,但总是在95:34:47开始,而不是00:00:00

这就是我到目前为止所尝试的

    <script>
        /*Timer Stuff*/
        function pad(num, size) {
            var s = "0000" + num;
            return s.substr(s.length - size);
        } 
        function formatTime(time) {
            var h = m = s = ms = 0;
            var newTime = '';

            h = Math.floor( time / (60 * 60 * 1000) );
            time = time % (60 * 60 * 1000);
            m = Math.floor( time / (60 * 1000) );
            time = time % (60 * 1000);
            s = Math.floor( time / 1000 );
            ms = time % 1000;

            newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 3);
            return newTime;
        } 

        function update() {
            var d = new Date();
            var n = d.getTime();
            document.getElementById("time").innerHTML = formatTime(n);
        }

        function start() {
            MyVar = setInterval(update, 1);
        }
    </script>
</head>
<body>
        <div>Time: <span id="time"></span></div>
        <input type="button" value="start" onclick="start();">
</body>

我知道我需要减去一个特定的时间来精确匹配计时器,但是我不知道怎么做。

必须引入一个开始时间变量。 在每一个更新步骤中,你都必须从开始到现在有所不同

对于您的代码:

    <script>
    /*Timer Stuff*/
    timestart = new Date();
    timestart_time = timestart.getTime();

    function pad(num, size) {
        var s = "0000" + num;
        return s.substr(s.length - size);
    } 
    function formatTime(time) {
        time = time -timestart_time;
        var h = m = s = ms = 0;
        var newTime = '';

        h = Math.floor( time / (60 * 60 * 1000) );
        time = time % (60 * 60 * 1000);
        m = Math.floor( time / (60 * 1000) );
        time = time % (60 * 1000);
        s = Math.floor( time / 1000 );
        ms = time % 1000;

        newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 3);
        return newTime;
    } 

    function update() {
        var d = new Date();
        var n = d.getTime();
        document.getElementById("time").innerHTML = formatTime(n);
    }

        function start() {
            MyVar = setInterval(update, 1);
        }
    </script>
</head>
<body>
        <div>Time: <span id="time"></span></div>
        <input type="button" value="start" onclick="start();">
</body>

这对我很有用:

您必须引入一个开始时间变量。 在每一个更新步骤中,你都必须从开始到现在有所不同

对于您的代码:

    <script>
    /*Timer Stuff*/
    timestart = new Date();
    timestart_time = timestart.getTime();

    function pad(num, size) {
        var s = "0000" + num;
        return s.substr(s.length - size);
    } 
    function formatTime(time) {
        time = time -timestart_time;
        var h = m = s = ms = 0;
        var newTime = '';

        h = Math.floor( time / (60 * 60 * 1000) );
        time = time % (60 * 60 * 1000);
        m = Math.floor( time / (60 * 1000) );
        time = time % (60 * 1000);
        s = Math.floor( time / 1000 );
        ms = time % 1000;

        newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 3);
        return newTime;
    } 

    function update() {
        var d = new Date();
        var n = d.getTime();
        document.getElementById("time").innerHTML = formatTime(n);
    }

        function start() {
            MyVar = setInterval(update, 1);
        }
    </script>
</head>
<body>
        <div>Time: <span id="time"></span></div>
        <input type="button" value="start" onclick="start();">
</body>

这对我很有用:

您需要存储一个带有开始时间的变量,然后从中减去。小时数的95实际上要高得多,只是被裁剪了一下,这是从Unix时代开始计算的

我会这样做:

    function update() {
        var d = new Date();
        var n = d - startTime;
        document.getElementById("time").innerHTML = formatTime(n);
    }

    function start() {
        startTime = new Date();
        MyVar = setInterval(update, 1);
    }

请注意,在进行减法运算时,您甚至不需要使用d.getTime—您只需减去日期对象本身。

您需要存储一个带有开始时间的变量,然后从中减去。小时数的95实际上要高得多,只是被裁剪了一下,这是从Unix时代开始计算的

我会这样做:

    function update() {
        var d = new Date();
        var n = d - startTime;
        document.getElementById("time").innerHTML = formatTime(n);
    }

    function start() {
        startTime = new Date();
        MyVar = setInterval(update, 1);
    }

请注意,在进行减法运算时,您甚至不需要使用d.getTime,只需减去日期对象本身即可。

看看这里:谢谢您的回答。虽然对于像我这样的新手来说,这有点太让人困惑了,我正在寻找一些不需要删除整个代码的东西。尽管如此,我还是会努力理解它是如何工作的,谢谢。看看这里:谢谢你的回答。虽然对于像我这样的新手来说,这有点太让人困惑了,我正在寻找一些不需要删除整个代码的东西。尽管如此,我还是会努力理解它是如何工作的,谢谢。啊,现在它有意义了!谢谢你的回答。啊,现在有道理了!谢谢你的回答。