How to change innerHTML of span of a div which is connected with Select-elements simultaneously when I change the value of the Select-Elements

Viewed 15

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&nbsp;&nbsp;</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&nbsp;&nbsp;</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;

}
0 Answers
Related