Javascript Секундомер не начинается с нуля - PullRequest
2 голосов
/ 25 сентября 2011

У меня есть базовый секундомер, но проблема в том, что он начинает отсчитываться при загрузке страницы, а не при нажатии кнопки запуска. Аналогично, когда вы перезагружаете и запускаете снова, возникает та же проблема.

<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>

Я пытался определить переменную запуска по нажатию кнопки запуска, но пока не добился большого успеха. Спасибо за любую помощь, спасибо.

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Вам нужно будет включить еще один сброс в doTimer():

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

См. Текущую версию здесь .

1 голос
/ 25 сентября 2011

Проблема в том, что вы записываете start, как только страница загружается, а не когда пользователь фактически нажимает кнопку запуска. Чтобы записать начало, когда пользователь фактически нажимает кнопку, измените вашу функцию doTimer на следующую

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