重置按钮在使用javascript的秒表中无效

时间:2014-05-22 12:19:32

标签: javascript html stopwatch

重置按钮没有重置,但它可以作为停止按钮,任何人都可以帮助我,这个代码有什么问题。

<!DOCTYPE html>
<html>
    <head>
        <title>Timer</title>
        <script>            
            var sec = 0;
            var min = 0;
            var hour = 0;
            var theResult = "";
            function WatchOperations(key) {
                sec++;
                if (sec == 60) {
                    sec = 0;
                    min = min + 1; }
                else {
                    min = min; }
                if (min == 60) {
                    min = 0; 
                    hour += 1; 
                }
                if (sec<=9) {
                    sec = "0" + sec;
                }
                document.getElementById("stopwatch").value = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) + " : " + sec;
                if (key == "Start") {
                    document.getElementById("startButton").value = "Stop ";
                }
                if (key == "Stop ") {
                    document.getElementById("startButton").value = "Start"; 
                    sec = sec-1; sec--; 
                }
                if (document.getElementById("startButton").value == "Start") {
                    return true; 
                }
                SD=window.setTimeout("WatchOperations();", 1000);
                theResult = document.getElementById("stopwatch").value;
            }
            function resetIt() {
                sec = 0;
                min = 0;
                hour = 0;                
                if (document.getElementById("startButton").value == "Stop ") {
                    document.getElementById("startButton").value = "Start";
                    window.clearTimeout(SD);
                }
            }
        </script>
    </head>
    <body>
        <table>
            <tr><td align="right"><input type="text" size="12" id="stopwatch" value="00 : 00 : 00" style="text-align:center" />
                </td>
            </tr>
            <tr><td><input type="button" id="startButton" value="Start" onclick="WatchOperations(this.value);"/></td>
                <td><input type="button" id="resetButton" value="Reset" onclick="resetIt()"></td>
            </tr>
        </table>
    </body>
</html>

4 个答案:

答案 0 :(得分:1)

添加此行document.getElementById(&#34;秒表&#34;)。value =&#34; 00:00:00&#34 ;;在这个方法resetIt 重置秒表

function resetIt() {
            sec = 0;
            min = 0;
            hour = 0;                
            if (document.getElementById("startButton").value == "Stop ") {
                document.getElementById("startButton").value = "Start";
        document.getElementById("stopwatch").value = "00 : 00 : 00";
                window.clearTimeout(SD);
            }
        }

如果您不想停止观看,则需要发表评论&#34; window.clearTimeout(SD);&#34;这个方法中的这一行

答案 1 :(得分:1)

首先,您需要在全局范围内声明clearTimeout() ID SD。正如您在多个功能中使用它:
第二,当您点击重置时,您必须将stopwatch设置为默认值"00 : 00 : 00"

function resetIt() {
    sec = 0;
    min = 0;
    hour = 0;
    if (document.getElementById("startButton").value == "Stop ") {
        document.getElementById("startButton").value = "Start";
        window.clearTimeout(SD);
        document.getElementById("stopwatch").value = "00 : 00 : 00"; // Changed
    }
}

Fiddle Demo

答案 2 :(得分:1)

我想在if条件块的外部重置秒表文本框值,这样即使单击“停止”按钮也能确保重置按钮正常工作。

function resetIt() {
   sec = 0;
   min = 0;
   hour = 0;                
   if (document.getElementById("startButton").value == "Stop ") {
     document.getElementById("startButton").value = "Start";
     window.clearTimeout(SD);
   }
     document.getElementById("stopwatch").value = "00 : 00 : 00";
}

此外,当按钮停止时,我看到你使用 sec - ; 。我认为这不是必需的。

答案 3 :(得分:0)

从您使用过的所有代码中删除SD,如果没有,那么程序也可以完美运行。