-1

I encountered a problem while trying to create a real-time-clock: I'm trying to show a zero before the number that represents minutes/hours/seconds when they are < 10, but the function doesn't work. May someone explain where I'm wrong and why please? Is it the poisition of the if statement or what? What does i represents?

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>
  <p id="p"></p>
  <script>
    function startClock() {

      var currentDate = new Date();

      var time = currentDate.getHours() + ":" + currentDate.getMinutes() + ":" + currentDate.getSeconds();

      document.getElementById("p").innerHTML = time;

      setTimeout(startClock, 1000);
    }

    function zeros(i) {
      if (i < 10) {
        return "0" + i;
      } else {
        return i;
      }
    }
    startClock();
    zeros();
  </script>
</body>

</html>
Pier
  • 103
  • 1
  • 11

1 Answers1

4

Your zeros function takes a number and add a zero in front if the number is < 10.

You need to call your zeros function when you set the time to convert hours, minutes, and seconds to zero-added form.

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>
  <p id="p"></p>
  <script>
    function startClock() {

      var currentDate = new Date();

      var time = zeros(currentDate.getHours()) + ":" + zeros(currentDate.getMinutes()) + ":" + zeros(currentDate.getSeconds());

      document.getElementById("p").innerHTML = time;

      setTimeout(startClock, 1000);
    }

    function zeros(i) {
      if (i < 10) {
        return "0" + i;
      } else {
        return i;
      }
    }
    startClock();
    zeros(); // this doesn't do anything????
  </script>
</body>

</html>
Daniel Tran
  • 6,083
  • 12
  • 25