часы
Самый простой способ создать часы - использовать метод exec () регулярного выражения, чтобы перехватить время чашки строки объекта времени и обновить его с помощью таймера.
<div id = "mydiv"> </div> <script> mydiv.innerhtml = //d/d:/d/d:/d/d/.exec(new date (). toString ()) [0]; setInterval (function () {myDiv.innerhtml = //d/d:/d/d:/d/demew.exectml = //d:/d/d:/d/deceectml = //d:/d/d:/d/deceectml = //d:/d/d:/d.exectml = //d:/d/d:/d.exectml = //d:/d:/d/deeml = //d:/d:/d/deeml = //d:/d/d:. Date (). ToString ()) [0];Обратный отсчет
【1】 Простой обратный отсчет
Простой обратный отсчет - это вычитать установленное время, устанавливая интервал каждые 1 с для удовлетворения требований
<div id = "mydiv"> <label for = "set"> <input type = "number" id = "set" step = "1" value = "0"> секунды </label> <button id = "btn"> подтвердить </button> <button id = "Reset"> reset </button> </div> <script> var -timer; = function () {if (timer) return; set.setattribute ('disabled', 'disabled'); timer = setInterval (function () {if (number (set.value) === 0) {clearInterval (timer); timer = 0; set.RemoVeattrю для 1;}, 1000);} </script>【2】 Точный обратный отсчет
Основываясь на рабочем механизме таймера, мы знаем, что изменение времени каждые 1000 мс не является надежным. Точнее, его следует использовать для обозначения времени выполнения системы, а изменения времени в обратном отсчете синхронизируются с изменением времени системы для достижения эффекта точного обратного отсчета.
[Примечание] В этой части вам необходимо рассчитать время, минуту и второй через модуль и операции деления. Детали перемещены сюда.
<div id = "mydiv"> <label for = "dour"> <input type = "number" id = "min =" 0 "max =" 23 "step =" 1 "value =" 0 " /> time < /label> <label для =" Minute "> <input type = number" id = "Minute" Min = "0" max = "59" step = "1" value = " /" /"Min Mine =" 0 "max =" 59 "=" 1 " для = "Second"> <input type = "number" id = "second" min = "0" max = "23" step = "1" value = "0"/> second </label> <button id = "btn"> Подтвердить </button> <button id = "Reset"> Freset </button> </div> <script> var -timer; // входной предел lignal hour.onchange = {if number () {i. number () nficue () {i. number () nficue () w. Число (this.value)) this.value = 0; if (this.value> 23) this.value = 23; if (this.value <0) this.value = 0;} second.onchange = minute.onchange = function () {if (номер (это. = 59; if (this.value <0) this.value = 0;} reset.onclick = function () {inistory.go ();} btn.onclick = function () {if (timer) return; for (var i = 0; i <3; i ++) {mydiv.getElementsbytagname ('input') [i] .setAttribute ('disablet', 'disabled');} // raw сохраняемое значение var setori = час. SETNOW; CancelAnimationFrame (Timer); Timer = requestAnimationFrame (function fn () {// Совместное значение времени системы var timenow = (new Date ()). getTime (); // Разница во времени системы равна разнице во время установленного времени для получения нормальных временных изменений = setori - math.floor (timenow -Timeori)/1000); Math.floor ((setnow%86400)/3600); minute.value = math.floor ((setnow%3600)/60); second.value = math.floor (setnow%60); Timer = requestAnimationFrame (fn); if (setnow == 0) {decelanimation timeframe (timer); timer = 0; end '; for (var i = 0; i <3; i ++) {mydiv.getElementsbytagname (' input ') [i] .RemoveatTribute (' disabled ');} setTimeout (function () {btn.innerhtml =' ok ';}, 1000)})} </script>Секундомер
【1】 Простой секундомер
Spectwatch имеет ту же идею, что и обратный отсчет, и по сравнению с ним проще. Добавить 100 мс за интервал
<div id = "mydiv"> <label for = "set"> <input id = "set" value = "0"> </label> <button id = "btn"> start </button> <button id = "reset"> reset </button> </div> <script> var timer; var = 'off'; var num = 0; = function () {if (con === 'off') {set.setAttribute ('disabled', 'disabled'); con = 'on'; btn.innerhtml = 'pause'; timer = setInterval (function () {num+= 100; var miname = math.floor (num/1000/60); var vecond = math.fl (num/1000); Math.floor (num%1000) /100; set.value = minute + ':' + second + '. }} </script>【2】 Точный секундомер
Подобно обратному отсчету, неточно использовать временной интервал таймера в качестве ссылки для изменения времени. Более точный подход должен заключаться в использовании изменений времени системы в качестве ссылки для изменений в секундоме.
<div id = "mydiv"> <label for = "set"> <input id = "set" value = "0"> </label> <button id = "btn"> start </button> <button id = "сброс"> сброс </button> </div> <script> var timer; var con off '; // ori income the ary varce varce the varce the secide secide wrunting wrunting wruntes at varce the secide secide the secdies the secdiте the secdiors wront the secide secide wruntes wruntes word wrunting wruntes (Dynamic) var dis = 0; // Последнее сохраняет количество секунд в паузе (static) var last = 0; reset.onclick = function () {inistory.go ();} btn.onclick = function () {if (con === 'off') {set.setattribute ('disabled', 'disabled'); cont on 'on'; 'pause'; // сохранить системное время количества секунд, которые прошли ORI = (new Date ()). getTime () - последний; timer = requestAnimationFrame (function fn () {dis = (new Date ()). getTime () - ori; accelanimationFrame (timer); Timer = requestAnimationFrame (fn); var miname = math.floor (dis/1000/60); var second = math.floor (dis/1000); var ms = math.floor (dis%1000); '' + ms; con = 'off'; last = dis;}} </script>Будильник
Будильник на самом деле добавляет заранее определенную настройку времени в часы. Настройка будильника требует преобразования установленного времени в количество миллисекундов с 1 января 1970 года, а затем рассчитывается разница с текущим временем. По мере того, как текущее время продолжает увеличиваться, когда разница разница 0, тревожные часы звонит
<div id = "mydiv"> </div> <div id = "con"> <label for = "hour"> <input type = "number" id = "min =" 0 "max =" 23 "step =" 1 "value =" 0 "/> time </label> <label for =" minute "> <number number" id = "min Minate" = "0" = "59" = "1" = "1" = "1" = "1" = "1" = "1" = "1" = "1" = "1" = "1". /> min </label> <label for = "second"> <input type = "number" id = "second" min = "0" max = "23" step = "1" value = "0"/> second </label> <button id = "btn"> Подтверждение </button> <button id = "Reset"> reset </button> </dev> <div = "show"> <cluth/reset aript> </var> <cript> </var arip> <cript/var> <sript> </vare> <sript> </vare> <sript> </var> <cript> </var> <cript> </var ar var dis; mydiv.innerhtml = //d/d:/d/d:/d/d/d/.exec(new date (). toString ()) [0]; setInterval (function () {myDiv.innerHtml = //d/d:/d/d:/d/d/.exec(new date (). }, 100); reset.onclick = function () {inistory.go ();} btn.onclick = function () {// исходное сохраненное значение var setori = hour.value*3600 + минута. setori*1000; // Если установтное время ранее, чем текущее время, настройка является недействительной if (setms <+new date ()) {return;} for (var i = 0; i <3; i ++) {con.getElementsbytagname ('input') [i] .setattribut requestAnimationFrame (function fn () {// Обработка разница между установленным временем и текущим временем dis = math.ceil ((setms - (new Date ()). getTime ())/1000); var showhour = math.floor (dis%86400)/3600); var showminut requestAnimationFrame (fn); show.innerhtml = 'все еще существует расстояние от запланированного времени' + showhour + 'hour' + showminute + 'minus' + second + 'seconds'; // Когда разница 0, время достигается, если (dis == 0) {adcelanimationframe (timer); i <3;наконец
Как таймер, самая проблемная вещь - это управление таймером. Если таймер включен только включен, но не выключен, он вызовет эффект суперпозиции таймера, что делает операцию быстрее и быстрее. Таким образом, это хорошая привычка выключаться, а затем включать таймер.
Выше приложение является третьим приложением таймера (часы, отсчет времени, секундомер и будильник), введенное вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!