Вариант 1
Некоторые события на сайте удобно визуализировать с помощью таймера, который производит обратный отсчёт времени в секундах. Делюсь простым примером кода, который сполна выполняет данную задачу.
<script type="text/javascript"> function timer(){ var obj=document.getElementById('timer_inp'); obj.innerHTML--; if (obj.innerHTML==0){ alert('Hello'); setTimeout(function(){},1000); } else { setTimeout(timer,1000); } } setTimeout(timer,1000); </script> <div>Осталось: <span id="timer_inp">10</span> сек.</div>
Между тегом span необходимо установить своё значение (в секундах), от которого будет производится обратный отсчет. По истечению времени счетчика в примере появляется модальное окно с надписью Hello.
В месте, где вызывается сообщение alert(‘hello’), можно добавить свою логику, которая будет выполняться по окончанию отсчёта.
Вариант 2
Данный вариант отличается от предыдущего тем, что визуализация обратного отсчета производится с показом остатка дней/часов/минут/секунд. Более удобен для больших временных интервалов, по понятным причинам что показывать к примеру: неделю в секундах — не очень то прикольно будет выглядеть. Приведенный ниже код использует библиотеку JQuery, поэтому её следует предварительно подключить.
<div> <span>Осталось: </span><span class="afss_day_bv">0</span> д. <span class="afss_hours_bv">00</span> час. <span class="afss_mins_bv">00</span> мин. <span class="afss_secs_bv">00 </span> сек. </div> <script type="text/javascript">//<![CDATA[ var remain_bv = 80768; function parseTime_bv(timestamp){ if (timestamp < 0) timestamp = 0; var day = Math.floor( (timestamp/60/60) / 24); var hour = Math.floor(timestamp/60/60); var mins = Math.floor((timestamp - hour*60*60)/60); var secs = Math.floor(timestamp - hour*60*60 - mins*60); var left_hour = Math.floor( (timestamp - day*24*60*60) / 60 / 60 ); $('span.afss_day_bv').text(day); $('span.afss_hours_bv').text(left_hour); if(String(mins).length > 1) $('span.afss_mins_bv').text(mins); else $('span.afss_mins_bv').text("0" + mins); if(String(secs).length > 1) $('span.afss_secs_bv').text(secs); else $('span.afss_secs_bv').text("0" + secs); } $(document).ready(function(){ setInterval(function(){ remain_bv = remain_bv - 1; parseTime_bv(remain_bv); if(remain_bv <= 0){ alert('Hello'); } }, 1000); }); //]]> </script>
Вот мой варик