javascript - Javascript 秒表遇到问题

标签 javascript settimeout

我正在制作秒表,这是我的代码。这对我来说非常有意义,但由于某种原因不想更新。

HTML:

        <ul>

            <li id="hour">0</li>
            <li>:</li>
            <li id="min">0</li>
            <li>:</li>
            <li id="sec">0</li>

        </ul>

JS:

    var sec = document.getElementById("sec").value,
        min = document.getElementById("min").value,
        hour = document.getElementById("hour").value;

        function stopWatch(){
            sec++;
            if(sec > 59) {
            sec = 0;
            min++;
            } else if(min > 59){
            min = 0;
            hour++;
            }

            window.setTimeout("stopWatch()", 1000);

        }

        stopWatch();

最佳答案

列表项没有 .value 属性。输入或文本区域有。应该是

var sec = parseInt(document.getElementById("sec").innerHTML, 10),
    min = parseInt(document.getElementById("min").innerHTML, 10),
    hour = parseInt(document.getElementById("hour").innerHTML, 10);

它还将它们解析为数字。

另外,不要将字符串传递给 setTimeout 。传递你想要调用的函数:

window.setTimeout(stopWatch, 1000);

并且在代码中没有任何地方输出更新的变量。它们不是指向 DOM 属性的神奇指针,而只是保存数字(或原始脚本中的字符串)。

最后但并非最不重要的一点是您的代码中存在逻辑错误。仅当秒数未超过 59 时,才检查分钟数是否超过 59。删除 if 之前的 else

关于javascript - Javascript 秒表遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684539/

相关文章:

javascript - 3秒后返回的函数

javascript - Firebase Storage 下载到电脑

javascript - 对多个元素使用相同的动画

javascript - 在他自己的任务中要求一个包是否正确? [ gulp ]

javascript - TextArea 返回错误值

javascript - 如何纠正倒计时器发生的延迟?

javascript - 如何在javascript中全局访问附加到元素的对象

javascript - JQuery:无法访问修改的元素

javascript - .addEventListener 中的计时器不起作用?

javascript - setTimeout问题,没有超时