I am coding a timer. You can determine the time by click on the edit button and select the certain time with the select elements. Unfortunately the numbers of the timer are not changing when I determine the time with the select elements. It should be change simultaneously but it is neither changing nor changing simultaneously. I even tried it with the eventlistener of the event "change" but it did not work. Where is my failure? I marked the considered area in m JavaScript up.
window.onload = function () {
//Card
const card = document.getElementById("card");
//Buttons
const editer = document.getElementById("editer");
const reseter = document.getElementById("reseter");
const x = document.getElementById("close-btn");
const starter = document.getElementById("starter");
const quiter = document.getElementById("quiter");
//"Select"-elements
const edtHours = document.getElementById("edt-hours");
const edtMinutes = document.getElementById("edt-minutes");
const edtSeconds = document.getElementById("edt-seconds");
//For calculation
const mainclock = document.getElementById("mainclock");
let i = true;
let [seconds, minutes, hours] = [0, 0, 0];
let interval = null;
//If "start" is clicked
starter.addEventListener("click", () => {
starter.innerText = "Stop";
if (!interval) {
interval = setInterval(() => {
timer();
}, 1000);
};
});
//Assign "Select"-elements to the associated "Span"-elements
/*This If-query is neccessary in order to avoid three "0" in mainclock.innerHTML*/
//CONSIDERED AREA
if (edtHours > 0) {
edtHours.value = hours
};
if (edtMinutes > 0) {
minutes = edtMinutes.value;
};
if (edtSeconds > 0) {
seconds = edtSeconds.value;
};
h = hours < 10 ? "0" + hours : hours;
m = minutes < 10 ? "0" + minutes : minutes;
s = seconds < 10 ? "0" + seconds : seconds;
mainclock.innerHTML = `${h} : ${m} : ${s} `;
//Timer
function timer() {
while (hours > 0) {
hours--;
};
while (minutes > 0) {
minutes--;
};
while (seconds > 0) {
seconds--;
};
};
//Functions without any actual mathematical reference
//Showing main-card
editer.addEventListener('click', () => {
if (i == true) {
card.style.display = "block";
i = false;
} else if (i == false) {
card.style.display = "none";
i = true;
}
});
//Closing main-card
x.addEventListener("click", () => {
card.style.display = "none";
i = true;
});
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Timer</title>
<script src="timer.js"></script>
<link rel="stylesheet" href="timer.css">
</head>
<body>
<div id="mainboard">
<div a id="mainclock">
<span class='span' id="mainhours">00:</span>
<span class='span' id="mainminutes">00:</span>
<span class='span' id="mainseconds">00</span>
</div>
<div id="main-btn">
<button class="button" id="editer">Edit</button>
<button class="button" id="reseter">Reset</button>
<button class="starter" id="starter">Start</button>
</div>
</div>
<div style="display:none" id="card">
<div id="card-hdng">Settings <button id="close-btn">X</button></div>
<div id="card-items">
<label for="edt-hours">Hours</label>
<select id="edt-hours" placeholder="00">
<option>00</option>
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
<option>32</option>
<option>33</option>
<option>34</option>
<option>35</option>
<option>36</option>
<option>37</option>
<option>38</option>
<option>39</option>
<option>40</option>
<option>41</option>
<option>42</option>
<option>43</option>
<option>44</option>
<option>45</option>
<option>46</option>
<option>47</option>
<option>48</option>
<option>49</option>
<option>50</option>
<option>51</option>
<option>52</option>
<option>53</option>
<option>54</option>
<option>55</option>
<option>56</option>
<option>57</option>
<option>58</option>
<option>59</option>
<option>60</option>
<option>61</option>
<option>62</option>
<option>63</option>
<option>64</option>
<option>65</option>
<option>66</option>
<option>67</option>
<option>68</option>
<option>69</option>
<option>70</option>
<option>71</option>
<option>72</option>
<option>73</option>
<option>74</option>
<option>75</option>
<option>76</option>
<option>77</option>
<option>78</option>
<option>79</option>
<option>80</option>
<option>81</option>
<option>82</option>
<option>83</option>
<option>84</option>
<option>85</option>
<option>86</option>
<option>87</option>
<option>88</option>
<option>89</option>
<option>90</option>
<option>91</option>
<option>92</option>
<option>93</option>
<option>94</option>
<option>95</option>
<option>96</option>
<option>97</option>
<option>98</option>
<option>99</option>
</select>
<label for="edt-minutes">Minutes</label>
<select id="edt-minutes">
<option>00 </option>
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
<option>32</option>
<option>33</option>
<option>34</option>
<option>35</option>
<option>36</option>
<option>37</option>
<option>38</option>
<option>39</option>
<option>40</option>
<option>41</option>
<option>42</option>
<option>43</option>
<option>44</option>
<option>45</option>
<option>46</option>
<option>47</option>
<option>48</option>
<option>49</option>
<option>50</option>
<option>51</option>
<option>52</option>
<option>53</option>
<option>54</option>
<option>55</option>
<option>56</option>
<option>57</option>
<option>58</option>
<option>59</option>
</select>
<label for="edt-seconds">Seconds</label>
<select id="edt-seconds">
<option>00 </option>
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
<option>32</option>
<option>33</option>
<option>34</option>
<option>35</option>
<option>36</option>
<option>37</option>
<option>38</option>
<option>39</option>
<option>40</option>
<option>41</option>
<option>42</option>
<option>43</option>
<option>44</option>
<option>45</option>
<option>46</option>
<option>47</option>
<option>48</option>
<option>49</option>
<option>50</option>
<option>51</option>
<option>52</option>
<option>53</option>
<option>54</option>
<option>55</option>
<option>56</option>
<option>57</option>
<option>58</option>
<option>59</option>
</select>
<button id="quiter">Quit</button>
<button class="starter">Start</button>
</div>
</div>
</body>
</html>
#mainboard {
margin: 45vh;
}
[a] {
display: flex;
justify-content: center;
align-items: center;
}
#main-btn {
display: flex;
justify-content: center;
align-items: center;
gap: 1vh;
}
#card {
width: 50vh;
height: 50vh;
border: 1px solid;
border-color: black;
border-radius: 5px;
position: absolute;
top: 30vh;
left: 65vh;
background-image: linear-gradient(to top, #accbee 0%, #e7f0fd 100%);
box-shadow: rgba(0, 0, 0, 0.2) 0px 60px 40px -7px;
}
#start {
background-color: #4AC33C;
}
#card-hdng {
background-color: #2f2f2f;
color: white;
}