У меня есть эта страница с textarea
и 3 buttons
. textarea
получает номер. В первом button
начинается coutdown от числа до 0, с задержкой вывода (один номер в секунду, поэтому, если N равно 10, это займет 10 секунд). Второй button
приостанавливает обратный отсчет, а третий button
возобновляет его (без запуска). Нажатие первого button
в любое время во время выполнения перезапускает coutdown с любым номером в textarea
. Это код, который я до сих пор:Обратный отсчет с использованием ванили JavaScript
<!DOCTYPE html>
<html>
<body>
<h2>Insert a number:</h2>
<textarea id="input"></textarea>
<br/>
<button id="start" onclick="begin()">BEGIN</button>
<button id="pause" onclick="pause()">PAUSE</button>
<button id="resume" onclick="resume()">RESUME</button>
<h1 id="result"></h1>
<script>
var isCounting=true,
input=document.getElementById("input"),
countSec;
function begin() {
countSec=input.value;
if (isNaN(countSec)) alert("NaN");
count();
}
function pause() {
isCounting=false;
}
function resume() {
isCounting=true;
count();
}
function count() {
var i,
bck=countSec;
for (i=0; i<=bck; i++) {
document.getElementById("result").innerHTML=countSec;
countSec--;
}
}
</script>
</body>
</html>
Есть ли способ, чтобы остановить выполнение в течение 1 секунды после countSec--
? Я пытался в течение 2 часов что-то делать с объектами Date и setTimeout, но я просто не могу понять, как сделать паузу после каждого for
итерации
лишь небольшая вещь, делает ваш код 'countSec -' перед выводом первого числа, так что мне пришлось измените первую строку функции begin с помощью 'countSec = parseInt (input.value) + 1' – ayyelmayo77
yes, your're right! Вы также можете использовать 'setTimeout' в' begin'. Как вы уже разобрались с исправлением, я отредактирую ответ с этой второй. – Paolo
Кроме того, разные функции функции count() 'запускаются одновременно, если вы дважды нажимаете кнопку« Начало »и, как результат, обратный отсчет быстрее обычного. Или, по крайней мере, это то, что, как я считаю, происходит, я все еще новичок в 'setInterval' и' setTimeout'. В любом случае, я добавил 'clearTimeout (таймер);' под 'countSec -' в первом блоке 'if' в функции' count', и он (магически?) Работает – ayyelmayo77