2

ここに基本的なストップウォッチがありますが、問題は、スタートボタンがクリックされたときではなく、ページが読み込まれたときにカウントを開始すると思うことです。同様に、リセットして再起動すると、同じ問題が発生します。

<form>
    <input type="button" value="Start count!" onclick="doTimer()" />
    <input type="text" id="txt" />
    <input type="button" value="Stop count!" onclick="stopCount()" />
    <input type="button" value="Reset!" onclick="resetCount()" />
</form>

<script type="text/javascript">

var start = new Date().getTime(); 
var elapsed = '0.0'; 
var t;
var timer_is_on=0;

function timedCount() {
    var time = new Date().getTime() - start;
    elapsed = Math.floor(time / 100) / 10; 
    if(Math.round(elapsed) == elapsed) { elapsed += '.0'; } 
    document.getElementById('txt').value=elapsed;
    t=setTimeout("timedCount()",50);
}

function doTimer() {
    if (!timer_is_on) {
        timer_is_on=1;
        timedCount();
    }
}

function stopCount() {
    clearTimeout(t);
    timer_is_on=0;
}

function resetCount() {
    document.getElementById('txt').value='0.0';
    var elapsed = '0.0';
}


</script>

スタートボタンのクリック時にスタート変数を定義しようとしましたが、今のところあまり成功していません。どんな助けでも大歓迎ですありがとう。

4

2 に答える 2

1

あなたが抱えている問題はstart、ユーザーが実際にスタートボタンをクリックしたときではなく、ページが読み込まれた直後に記録することです。ユーザーが実際にボタンをクリックしたときの開始を記録するには、doTimer関数を次のように変更します

function doTimer() {
  if (!timer_is_on) {
    start = new Date().getTime();
    timer_is_on=1;
    timedCount();
  }
}
于 2011-09-25T17:58:35.857 に答える
1

に別のリセットを含める必要がありますdoTimer()

function doTimer() {
    if (!timer_is_on) {
        start = new Date().getTime(); 
        timer_is_on=1;
        timedCount();
    }
}

ここで実行中のバージョンを参照してください。

于 2011-09-25T18:00:29.750 に答える