0

私のプロジェクトでは、開始ボタンがクリックされたときに実行され、終了がクリックされたときに停止するタイマーを使用しています

問題は、スタートボタンが2回以上クリックされたときに誤って発生します..時間は+1000ミリ秒余分にかかり、より速く実行を開始します..これは起こらないはずです.

私のjavascriptは..

<script type="text/javascript">
var sec = 0;
var min = 0;
var hour = 0;
function stopwatch(text) {
    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("starttime").innerHTML = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) + " : " + sec;
    SD=window.setTimeout("stopwatch();", 1000);
}

function f3() {
    clearTimeout(SD);
}
</script>
<form name="clock">
<div id="starttime" style="font-size:large; "></div>
<input type="button" name="theButton" id="Start" value="Start"  onClick="stopwatch(this.value);" />
<input type="button" name="theButton" id="end" value="Stop"  onClick="f3();" />
</form>

私はこのようなことを試しました..

  if (document.clock.theButton.value == "Start") {
            window.clearTimeout(SD);
            return true;  }`

....しかし、機能していません

4

2 に答える 2

0

次のようなことができます。

var SD;
function stopwatch(text) {
    if (SD && text) {
        return;
    }
            ....
}

function f3() {
    clearTimeout(SD);
    SD = false;
    sec = 0;
    min = 0;
    hour = 0;
}

つまり、ボタンがクリックされたときにタイムアウトがすでに実行されているかどうかを確認し、必要に応じて実行をキャンセルできます。

更新されたjsFiddleでテストできます。

于 2013-07-10T11:26:50.410 に答える