Область действия переменных в вашей функции сбивает с толку, потому что вы опустите ключевое слово var
для всех из них.Сначала я бы очистил объявления переменных и использовал силу jQuery вместо того, чтобы вручную пробираться через DOM для установки значений:
<form action="javascript:void(null);" id="theTimer" name="theTimer">
<input id="timerDisplay" type="text" name="theTime" readonly="readonly" />
<br />
<input type="submit" name="start" id="start" value="Start"/>
<input type="submit" name="stop" id="stop" value="Stop"/>
<input type="submit" name="pause" id="pause" value="Pause"/>
</form>
Я удалил события onclick и исправил атрибут readonly
и ваши цитаты.Я думаю, что отчасти проблема в том, что вы отправляли форму, когда нажимали кнопки, а страница отправлялась обратно.Ваши таймеры сбрасывались, когда это происходило, вызывая неожиданное поведение.Я добавляю обратно функции, используя jQuery:
$(function() {
$('#start').click(function() {
Start();
return false;
});
$('#stop').click(function() {
Stop();
return false;
});
$('#pause').click(function() {
Pause();
return false;
});
});
var timerID, myTimer;
function Pause() {
if (timerID) {
clearTimeout(timerID);
}
if (myTimer) {
clearInterval(myTimer);
}
if ($('#pause').val() == "Pause") {
$('#pause').val("Resume");
} else {
$('#pause').val("Pause");
var tToday = new Date();
var total_time = tToday.getTime() - tDiff;
var tStart = new Date(total_time);
timerID = setTimeout(UpdateTimer, 1000);
startTimer();
}
}
Возможно, вы могли бы заполнить пробелы в своем вопросе тем, что делают startTimer()
и UpdateTimer()
?Кроме того, вы на самом деле не объяснили что ваша проблема точно ... не могли бы вы побаловать нас?