Мне нужно, чтобы мой таймер JavaScript остановился на 0, отобразил сообщение, а затем перезапустил - PullRequest
1 голос
/ 22 февраля 2011

Я создал таймер JavaScript, который начинается с 40 и ведет обратный отсчет до единицы, но не останавливается на 0, и я хочу, чтобы он отображал сообщение (не предупреждение) / добавлял элемент в базу данных, когда он достигает 0,и затем перезапустите на 40 секунд.Если вы могли бы оказать любую помощь, заранее спасибо: D

<html>
<head>
<script type="text/javascript">
var c=40;
var t;
var timer_is_on=0;

function timedCount()
{
document.getElementById('txt').value=c;
c=c-1;
t=setTimeout("timedCount()",1000);
}

function doTimer()
{
if (!timer_is_on)
{
timer_is_on=1;
timedCount();
}
}
</script> 
</head>

<body>
<form>
<input type="button" value="Start count!" onClick="doTimer()">
<input type="text" id="txt">
</form>
<p>Click on the button above. It will count down from 40</p>
</body>
</html>

1 Ответ

1 голос
/ 22 февраля 2011

Вы хотите использовать setInterval, а не setTimeout, поскольку это будет запускать метод периодически в соответствии с указанной вами задержкой.

Это перезапустит таймер, когда счет достигнет 0:

    function timedCount() {
        document.getElementById('txt').value = c;
        c = c - 1;
        if (c == 0)
            c = 40;
    }

    function doTimer() {
        if (!timer_is_on) {
            timer_is_on = true;
            t = setInterval(function () {
                timedCount();
            }, 1000);                
        }
    }

Если вы хотите остановить таймер, когда счетчик достигнет 0, используйте это:

    function timedCount() {
        document.getElementById('txt').value = c;
        c = c - 1;
        if (c == 0) {
            c = 40;
            clearInterval(t); // Stops the interval
        }
    }
...