В современном мире динамика на интернет ресурсах очень популярна, и в частности, эту динамику реализовывают с помощью языка программирования JavaScript. Сегодня мы рассмотрим несколько простых, но интересных и полезных примеров, а если говорить конкретней, то мы рассмотрим пример реализации часов, секундомера и обратного отчета.
Ранее мы с Вами уже изучали JavaScript и если Вы пропустили эти уроки, то для более лучшего освоения наших сегодняшних примеров, Вам сначала необходимо ознакомиться с ними: JavaScript для начинающих – Простые примеры, JavaScript – Пример расширения формы регистрации.
Примечание! Для работы всех примеров ниже, необходимо включить поддержку JavaScript в браузере. Если Вы, не знаете, включена ли эта поддержка и принудительно Вы ее не отключали, то она по умолчанию включена, и Вы можете по этому поводу не париться.
Пример реализации часов на JavaScript
Начнем мы с примера часов. Часы на JavaScript достаточно легко можно реализовать, и ниже представлен код с комментариями, поэтому проблем возникнуть не должно.
Сейчас время
<!--Место, где мы хотим выводить часы--> <p>Сейчас время - <span id="idClock"></span></p> <!--Скрипт на JavaScript--> <script language="JavaScript" type="text/javascript"> function SimpleClock() { //создаем объект с текущей датой и временем var tekDate = new Date(); //получаем из объекта часы, минуты и секунды var hour = tekDate.getHours(); var minute = tekDate.getMinutes(); var seconds = tekDate.getSeconds(); //для того чтобы минуты и секунды до 10 отображались корректно с нулем minute=((minute < 10) ? "0" : "") + minute; seconds =((seconds < 10) ? "0" : "") + seconds; //смотрим чтобы часы не переваливали за 24 hour=(hour > 24) ? hour-24 : hour; hour=(hour == 0) ? 0 : hour; //задаем окончательное значение времени var clock = hour + ":" + minute + ":" + seconds; //отрисовываем время на странице if(clock != document.getElementById('idClock').innerHTML){ document.getElementById('idClock').innerHTML = clock; } //выполняем все это каждую секунду timer = setTimeout("SimpleClock()",1000); } //для первого запуска SimpleClock(); </script>
Пример реализации секундомера на JavaScript
Секундомер пишется чуть посложней, но все равно не так сложно, как кажется. Мы будем рассматривать пример, где будут присутствовать миллисекунды. Давайте приступим.
<script language="JavaScript" type="text/javascript"> //объявляем переменные var base = 60; var clocktimer,dateObj,dh,dm,ds,ms; var readout=''; var h=1,m=1,tm=1,s=0,ts=0,ms=0,init=0; //функция для очистки поля function ClearСlock() { clearTimeout(clocktimer); h=1;m=1;tm=1;s=0;ts=0;ms=0; init=0; readout='00:00:00.00'; document.MyForm.stopwatch.value=readout; } //функция для старта секундомера function StartTIME() { var cdateObj = new Date(); var t = (cdateObj.getTime() - dateObj.getTime())-(s*1000); if (t>999) { s++; } if (s>=(m*base)) { ts=0; m++; } else { ts=parseInt((ms/100)+s); if(ts>=base) { ts=ts-((m-1)*base); } } if (m>(h*base)) { tm=1; h++; } else { tm=parseInt((ms/100)+m); if(tm>=base) { tm=tm-((h-1)*base); } } ms = Math.round(t/10); if (ms>99) {ms=0;} if (ms==0) {ms='00';} if (ms>0&&ms<=9) { ms = '0'+ms; } if (ts>0) { ds = ts; if (ts<10) { ds = '0'+ts; }} else { ds = '00'; } dm=tm-1; if (dm>0) { if (dm<10) { dm = '0'+dm; }} else { dm = '00'; } dh=h-1; if (dh>0) { if (dh<10) { dh = '0'+dh; }} else { dh = '00'; } readout = dh + ':' + dm + ':' + ds + '.' + ms; document.MyForm.stopwatch.value = readout; clocktimer = setTimeout("StartTIME()",1); } //Функция запуска и остановки function StartStop() { if (init==0){ ClearСlock(); dateObj = new Date(); StartTIME(); init=1; } else { clearTimeout(clocktimer); init=0; } } </script> <!--Форма для Секундомера--> <form name=MyForm> <input type=button value="Обнулить" onclick="ClearСlock()"> <input name=stopwatch size=10 value="00:00:00.00"> <input type=button value="Запуск/Остановить" onclick="StartStop()"> </form>
Обратный отчет – пример на JavaScript
Рассмотрим простой пример обратного отчета, где Вы сами будете задавать время, которое будет отчитываться в секундах. Вот код, он также прокомментирован.
<script> //Объявим переменную var stopTimer; //Функция для старта function testTimer(startTime) { //для повторного запуска очистим rezult document.getElementById("rezult").innerHTML = ''; //выключим кнопку запуска var bot = document.getElementById("bot"); bot.setAttribute("disabled",""); //сколько будет длиться обратный отчет var time = startTime; //определим сколько минут var min = parseInt(time / 60); if ( min < 1 ) min = 0; time = parseInt(time - min * 60); if ( min < 10 ) min = '0'+min; //определим сколько секунд var seconds = time; if ( seconds < 10 ) seconds = '0'+seconds; //отрисовываем время document.getElementById("time").innerHTML='<span>Осталось времени- '+min+' мин '+seconds+' секунд</span>'; //уменьшаем общее время на одну секунду startTime--; //смотрим время не закончилось if ( startTime >= 0 ) { //если нет, то повторяем процедуру заново stopTimer = setTimeout(function(){testTimer(startTime); }, 1000); //если закончилось, то выводим сообщение на экран, и делаем кнопку запуска активной } else { document.getElementById("time").innerHTML='<span>Осталось времени- 00 мин 00 секунд</span>'; var rezult = document.getElementById("rezult"); rezult.innerHTML ="Время вышло"; clearTimeout(stopTimer); var bot = document.getElementById("bot"); bot.removeAttribute("disabled","disabled"); bot.removeChild(bot.childNodes[0]); var text = document.createTextNode("Начать заново"); bot.appendChild(text); } } //Функция для остановки обратного отчета function stop(){ //очистим переменную с таймером clearTimeout(stopTimer); //и включим кнопку запуска var bot = document.getElementById("bot"); bot.removeAttribute("disabled","disabled"); } </script> <p id = "time"></p> <button id = "bot" onclick="testTimer (10)">Начать</button> <button onclick="stop ()">Остановить</button> <p id = "rezult"> </p>
Где при запуске функции testTimer, необходимо передать параметр количество секунд, которое должно отчитаться.
Вот простые примеры, которые помогут Вам написать что-то серьезное и внедрить на своем ресурсе. Удачи!
Кстати, прикольные примеры, спасибо!
Класс то что нужно. Спасибо
Есть ошибочка в логике скрипта секундомера. Если нажать паузу, то просто прекратится показ отсчета, но сам отсчет продолжится. То есть если нажать паузу, а через некоторое время снова старт, то увидим, что таймер перескочил и начал показывать время пройденное после первого старта.
Как исправить эту ошибку?
Пример в статье исправил. Секундомер в данном скрипте работает в режиме запуска и остановки, т.е. без паузы.
спасибо скриты нормальные спасибо
Спасибо большое! В JS я не понимаю ничего, так ваш код был моим спасением. Скопировала ваш Секундомер на мою страничку и с моими стилями он работает превосходно и выглядит прекрасно.
Я только начал изучать JS и очень прошу помощи в доработке скрипта таймера. Как сделать, что бы можно было разместить несколько таймеров на одной странице?
Скажите пожалуйста, а как будет если при запуске страницы сразу же появлялся обратной отсчет.