Простой таймер на JavaScript
Рассмотрим простой пример реализации кнопки-таймера с обратным отсчетом на javascript. По окончании времени будем совершать перенаправление на другую страницу, хотя это действие можно заменить на любое другое. Как всегда, начнем с конечного результата.
Это обычная ссылка, которая оформлена при помощи CSS стилей. Сами стили не публикую, работать будет и без них. Оформить каждый из Вас сможет под себя. Перейдём к javascript коду:
<script>
function timer(){
var obj=document.getElementById('RealButton');
var regexp = /(\d+)/i;
var RealTimer = regexp.exec(obj.innerHTML)[0];
if (--RealTimer < 0) RealTimer = 0;
obj.innerHTML = 'Обновить страницу [ '+RealTimer+' ]';
if (RealTimer==0) {
location.replace("https://realadmin.ru/coding/button-timer-js.html");
return;
}
else { setTimeout(timer,1000); }
}
setTimeout(timer,1000);
</script>
<a id="RealButton" href="/coding/button-timer-js.html">Обновить страницу [ 999 ]</a>
Код простой и основан на рекурсивном вызове функции. В функции «time» получаем содержимое html тега с идентификатором «RealButton» и с помощью регулярного выражения извлекаем из него число, которое является текущим значением таймера:
var regexp = /(\d+)/i;
var RealTimer = regexp.exec(obj.innerHTML)[0];
Затем уменьшаем значение таймера на единицу и проверяем, не пора ли останавливать его. Если пора, то выполняем какое-нибудь действие и возвращаем значение «true», иначе, повторно вызываем функцию «time». И так до тех пор, пока значение «RealTimer» не станет равным нулю.
Округление чисел в JavaScript
Топ 10 популярных языков программирования
Ошибка «EPROTO» при установке npm пакетов
Способы валидации чисел в JavaScript
Основы работы с хранилищем Vuex
Вставляем кнопку «наверх» на сайт
Подскажите как сделать данный таймер, что б он включался по клику а не при загрузке страницы?
Спасибо! отличный сайт много что полезного можно найти!
Функцию timer, конечно заранее прописать как в примере.
В контакте когда что нибудь пишешь на своей страничке есть таймер для задержки и выкладывания поста в заданное время.
Можно прописать таймер в обратном порядке? Что бы запись появившись в заданное время через заданное время обратно исчезала?
Спасибо много интересного!
a data-jss=«b-search-button» data-analytics-event=«top_menu-find_button» href=«ссылуа.html» class=«button raised xl primary uppercase form_horizontal__control»
Выбрать
А в скрипте меняем:
location.replace("http://realadmin.ru/coding/button-timer-js.html"); на obj.setAttribute('href','ссылка по которой разрешить переход')<a id="RealButton" href="#" onclick="document.getElementById('RealButton').innerHTML='Обнулить таймер [30]'; setTimeout(timer,1000); return false;">Обнулить таймер [30]</a>$('#myBtn').show();Выбрать [9]
<a id="RealButton" href="javascript:void(0)">Выбрать [9]</a> <script type="text/javascript"> function timer(){ var obj=document.getElementById('RealButton'); var regexp = /(\d+)/i; var RealTimer = regexp.exec(obj.innerHTML)[0]; RealTimer=RealTimer - 1; if (RealTimer<0) RealTimer=0; obj.innerHTML = 'Обновить страницу [ '+RealTimer+' ]'; if (RealTimer==0) { obj.setAttribute('href','<?php echo $url["url"] ?>'); return true; } else { setTimeout(timer,1000); } } setTimeout(timer,1000); </script>if (RealTimer==0) { $('.button24').show(); return true; }<a href="#" class="button24">кнопка</a> ---------------------------------------------------------------- a.button24 { display: inline-block; color: white; text-decoration: none; padding: .5em 2em; outline: none; border-width: 2px 0; border-style: solid none; border-color: #FDBE33 #000 #D77206; border-radius: 6px; background: linear-gradient(#F3AE0F, #E38916) #E38916; transition: 0.2s; } a.button24:hover { background: linear-gradient(#f5ae00, #f59500) #f5ae00; } a.button24:active { background: linear-gradient(#f59500, #f5ae00) #f59500; }setTimeout(function(){ obj=document.getElementById('wrapper-link'); obj.innerHTML = '<a href="/file.doc">Ссылка</a>'; },2000);setTimeout(function(){//тут код, который отработает после истечения 6 минут},1000*60*6);