JavaScript обратный отсчет с добавлением кнопок запуска и сброса - PullRequest
3 голосов
/ 19 марта 2011

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

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var interval;
    var minutes = 5;
    var seconds = 10;
    window.onload = function() {
        countdown('countdown');
    }

    function countdown(element) {
        interval = setInterval(function() {
            var el = document.getElementById(element);
            if(seconds == 0) {
                if(minutes == 0) {
                    alert(el.innerHTML = "countdown's over!");                    
                    clearInterval(interval);
                    return;
                } else {
                    minutes--;
                    seconds = 60;
                }
            }
            if(minutes > 0) {
                var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
            } else {
                var minute_text = '';
            }
            var second_text = seconds > 1 ? 'seconds' : 'second';
            el.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + ' remaining';
            seconds--;
        }, 1000);
    }
</script> 
</head>

<body>
<div id='countdown'></div>
</body>
</html>

Ответы [ 4 ]

3 голосов
/ 19 марта 2011

вместо загрузки используйте это

<input type="button" onclick="countdown('countdown');" value="Start" />

для сброса, используйте это

<input type="button" onclick="minutes=5;seconds=10;" value="Reset" />
3 голосов
/ 19 марта 2011

Код, который запускает обратный отсчет, находится здесь:

window.onload = function() {
    countdown('countdown');
}

Вместо этого вы можете стереть это и вставить кнопку в содержимое, которое запускает обратный отсчет с помощью поведения при нажатии:

<a href="javascript:void(0);" onclick="countdown('countdown')">Click Me to Start</a>

Таймер хранится в вашем

var interval;

Чтобы остановить его, вы можете вставить другую кнопку, которая вызывает clearInterval (интервал):

<a href="javascript:void(0);" onclick="clearInterval(interval)">Click Me to Stop</a>

Для сброса выполните то же, что и другиепредложил и сохранить новое значение в минутах, секундах:)

0 голосов
/ 23 августа 2017

секунд = 60;

Вам нужно сбросить секунды до 59, потому что в противном случае вы считаете 60 дважды. Один раз с 0 и один раз с 60.

0 голосов
/ 19 марта 2011

вам понадобятся две кнопки:

<input type="button" value="reset" id="reset" />
<input type="button" value="start" id="start" />

и javascript для них:

var reset = document.getElementById('reset');
reset.onclick = function() {
    minutes = 5;
    seconds = 10;
    clearInterval(interval);
    interval = null;
}

var start = document.getElementById('start');
start.onclick = function() {
    if (!interval) {
        countdown('countdown');
    }
}

пример здесь

...