Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Clock</title>
- <style type="text/css">
- body {
- font-family: "Helvetica Neue", Helvetica, sans-serif;
- }
- #clock {
- background-color: #000000;
- color: #ffffff;
- font-size: 1em;
- padding: 2em;
- }
- </style>
- </head>
- <body>
- <div id="clock">
- <span id="hour">00</span>:<span id="minute">00</span>:<span id="second">00</span>
- </div>
- <div>
- <form>
- <select id="hour-selector">
- <option value="0">00</option>
- <option value="1">01</option>
- <option value="2">02</option>
- <option value="3">03</option>
- <option value="4">04</option>
- <option value="5">05</option>
- <option value="6">06</option>
- <option value="7">07</option>
- <option value="8">08</option>
- <option value="9">09</option>
- <option value="10">10</option>
- <option value="11">11</option>
- <option value="12">12</option>
- <option value="13">13</option>
- <option value="14">14</option>
- <option value="15">15</option>
- <option value="16">16</option>
- <option value="17">17</option>
- <option value="18">18</option>
- <option value="19">19</option>
- <option value="20">20</option>
- <option value="21">21</option>
- <option value="22">22</option>
- <option value="23">23</option>
- </select> : <select id="minute-selector">
- <option value="0">00</option>
- <option value="1">01</option>
- <option value="2">02</option>
- <option value="3">03</option>
- <option value="4">04</option>
- <option value="5">05</option>
- <option value="6">06</option>
- <option value="7">07</option>
- <option value="8">08</option>
- <option value="9">09</option>
- <option value="10">10</option>
- <option value="11">11</option>
- <option value="12">12</option>
- <option value="13">13</option>
- <option value="14">14</option>
- <option value="15">15</option>
- <option value="16">16</option>
- <option value="17">17</option>
- <option value="18">18</option>
- <option value="19">19</option>
- <option value="20">20</option>
- <option value="21">21</option>
- <option value="22">22</option>
- <option value="23">23</option>
- <option value="24">24</option>
- <option value="25">25</option>
- <option value="26">26</option>
- <option value="27">27</option>
- <option value="28">28</option>
- <option value="29">29</option>
- <option value="30">30</option>
- <option value="31">31</option>
- <option value="32">32</option>
- <option value="33">33</option>
- <option value="34">34</option>
- <option value="35">35</option>
- <option value="36">36</option>
- <option value="37">37</option>
- <option value="38">38</option>
- <option value="39">39</option>
- <option value="40">40</option>
- <option value="41">41</option>
- <option value="42">42</option>
- <option value="43">43</option>
- <option value="44">44</option>
- <option value="45">45</option>
- <option value="46">46</option>
- <option value="47">47</option>
- <option value="48">48</option>
- <option value="49">49</option>
- <option value="50">50</option>
- <option value="51">51</option>
- <option value="52">52</option>
- <option value="53">53</option>
- <option value="54">54</option>
- <option value="55">55</option>
- <option value="56">56</option>
- <option value="57">57</option>
- <option value="58">58</option>
- <option value="59">59</option>
- </select> : <select id="second-selector">
- <option value="0">00</option>
- <option value="1">01</option>
- <option value="2">02</option>
- <option value="3">03</option>
- <option value="4">04</option>
- <option value="5">05</option>
- <option value="6">06</option>
- <option value="7">07</option>
- <option value="8">08</option>
- <option value="9">09</option>
- <option value="10">10</option>
- <option value="11">11</option>
- <option value="12">12</option>
- <option value="13">13</option>
- <option value="14">14</option>
- <option value="15">15</option>
- <option value="16">16</option>
- <option value="17">17</option>
- <option value="18">18</option>
- <option value="19">19</option>
- <option value="20">20</option>
- <option value="21">21</option>
- <option value="22">22</option>
- <option value="23">23</option>
- <option value="24">24</option>
- <option value="25">25</option>
- <option value="26">26</option>
- <option value="27">27</option>
- <option value="28">28</option>
- <option value="29">29</option>
- <option value="30">30</option>
- <option value="31">31</option>
- <option value="32">32</option>
- <option value="33">33</option>
- <option value="34">34</option>
- <option value="35">35</option>
- <option value="36">36</option>
- <option value="37">37</option>
- <option value="38">38</option>
- <option value="39">39</option>
- <option value="40">40</option>
- <option value="41">41</option>
- <option value="42">42</option>
- <option value="43">43</option>
- <option value="44">44</option>
- <option value="45">45</option>
- <option value="46">46</option>
- <option value="47">47</option>
- <option value="48">48</option>
- <option value="49">49</option>
- <option value="50">50</option>
- <option value="51">51</option>
- <option value="52">52</option>
- <option value="53">53</option>
- <option value="54">54</option>
- <option value="55">55</option>
- <option value="56">56</option>
- <option value="57">57</option>
- <option value="58">58</option>
- <option value="59">59</option>
- </select>
- <button type="submit">Set time</button>
- </form>
- </div>
- <script type="text/javascript">
- (() => {
- let $form = document.querySelector("form");
- let $hourSelector = document.querySelector("#hour-selector");
- let $minuteSelector = document.querySelector("#minute-selector");
- let $secondSelector = document.querySelector("#second-selector");
- let $hour = document.querySelector("#hour");
- let $minute = document.querySelector("#minute");
- let $second = document.querySelector("#second");
- let displayedTime = {
- hour: 23,
- minute: 3,
- second: 0,
- };
- let lastDifference = 0;
- let startTime = new Date().getTime();
- let displayHour = () => {
- let hourText = displayedTime.hour;
- if (hourText < 10) {
- hourText = "0" + hourText;
- }
- $hour.textContent = hourText;
- };
- let displayMinute = () => {
- let minuteText = displayedTime.minute;
- if (minuteText < 10) {
- minuteText = "0" + minuteText;
- }
- $minute.textContent = minuteText;
- };
- let displaySecond = () => {
- let secondText = displayedTime.second;
- if (secondText < 10) {
- secondText = "0" + secondText;
- }
- $second.textContent = secondText;
- };
- let updateTimer = () => {
- let time = new Date().getTime();
- let difference = time - startTime;
- difference -= difference % 1000;
- difference /= 1000;
- if (lastDifference === difference) {
- return;
- }
- let toAddSeconds = difference - lastDifference;
- let toAddMinutes = 0;
- let toAddHours = 0;
- let newSecond = displayedTime.second + toAddSeconds;
- while (newSecond > 59) {
- newSecond-= 60;
- ++toAddMinutes;
- }
- if (newSecond !== displayedTime.second) {
- displayedTime.second = newSecond;
- displaySecond();
- }
- let newMinute = displayedTime.minute + toAddMinutes;
- while (newMinute > 59) {
- newMinute-= 60;
- ++toAddHours;
- }
- if (newMinute !== displayedTime.minute) {
- displayedTime.minute = newMinute;
- displayMinute();
- }
- let newHour = displayedTime.hour + toAddHours;
- while (newHour > 23) {
- newHour-= 24;
- }
- if (newHour !== displayedTime.hour) {
- displayedTime.hour = newHour;
- displayHour();
- }
- lastDifference = difference;
- };
- let configString = localStorage.getItem("config");
- let config = {
- hour: 23,
- minute: 3,
- second: 0,
- };
- if (configString) {
- config = JSON.parse(configString);
- }
- displayedTime.hour = config.hour;
- displayedTime.minute = config.minute;
- displayedTime.second = config.second;
- $hourSelector.value = config.hour.toString();
- $minuteSelector.value = config.minute.toString();
- $secondSelector.value = config.second.toString();
- displayHour();
- displayMinute();
- displaySecond();
- setInterval(updateTimer, 50);
- $form.addEventListener("submit", e => {
- e.preventDefault();
- config.hour = parseInt($hourSelector.value, 10);
- config.minute = parseInt($minuteSelector.value, 10);
- config.second = parseInt($secondSelector.value, 10);
- localStorage.setItem("config", JSON.stringify(config));
- startTime = new Date().getTime();
- lastDifference = 0;
- displayedTime.hour = config.hour;
- displayedTime.minute = config.minute;
- displayedTime.second = config.second;
- displayHour();
- displayMinute();
- displaySecond();
- }, false);
- })();
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement