Секундомер, который я сделал с помощью JS, не работает

#javascript

#javascript

Вопрос:

Я несколько раз запускал код, пытаясь исправить любую ошибку, которую я нашел в коде, но, похоже, это просто не работает.

Я использую цикл setInterval(). Функция даже не запускается один раз. В чем может быть проблема?

 function stopWatch () {

  var hours = Number(document.getElementById('hours').innerHTML);
  var minutes = Number(document.getElementById('minutes').innerHTML);
  var seconds = Number(document.getElementById('seconds').innerHTML);

  if (seconds<60) {
    seconds  
  } else {
    seconds = 0;
    minutes  
  }

  if (minutes == 60) {
    minutes = 0;
    hours  
  }

  if (seconds.length==2) {
    document.getElementById('seconds').innerHTML = seconds;
  } else {
    document.getElementById('seconds').innerHTML = '0'   seconds;
  }

  if (minutes.length==2) {
    document.getElementById('minutes').innerHTML = minutes;
  } else {
    document.getElementById('minutes').innerHTML = '0'   minutes;
  }

  if (hours.length==2) {
    document.getElementById('hours').innerHTML = hours;
  }

  if (hours.length==1) {
    document.getElementById('hours').innerHTML = '0'   hours;
  }
  
 }

setInterval(stopWatch,1000)  
 <html>
<head></head>
<body>
    <p>
        <span id='hours'>00</span>:<span id='minutes'>00</span>:<span id='seconds'>00</span>
    </p>
</body>
</html>  

Комментарии:

1. Ваш код выполняется только один раз. Вам нужно использовать цикл с некоторым описанием.

Ответ №1:

Ваш код выполняется только один раз. Вам нужно использовать цикл с некоторым описанием.

Есть много способов сделать это. Простым примером может быть использование setInterval для вызова внутренних элементов вашей функции каждую секунду.

У вас также есть ошибка в вашей логике. Вы не должны проверять длину number ( seconds.length==2 ) . Вы должны проверить, больше ли число, чем 9 ( seconds > 9 ):

 function stopWatch() {

  setInterval(function() {

    var hours = Number(document.getElementById('hours').innerHTML);
    var minutes = Number(document.getElementById('minutes').innerHTML);
    var seconds = Number(document.getElementById('seconds').innerHTML);

    if (seconds < 60) {
      seconds  
    } else {
      seconds = 0;
      minutes  
    }

    if (minutes == 60) {
      minutes = 0;
      hours  
    }

    if (seconds > 9) {
      document.getElementById('seconds').innerHTML = seconds;
    } else {
      document.getElementById('seconds').innerHTML = '0'   seconds;
    }

    if (minutes > 9) {
      document.getElementById('minutes').innerHTML = minutes;
    } else {
      document.getElementById('minutes').innerHTML = '0'   minutes;
    }

    if (hours > 9) {
      document.getElementById('hours').innerHTML = hours;
    } else {
        document.getElementById('hours').innerHTML = '0'   hours;
    }

  }, 1000);

}

stopWatch()  
 <html>

<head></head>

<body>
  <p>
    <span id='hours'>00</span>:<span id='minutes'>00</span>:<span id='seconds'>00</span>
  </p>
</body>

</html>  

Ответ №2:

Вы имеете в виду, почему секундомер не работает? Вы должны обернуть его в setInteraval, чтобы он обновлялся каждую секунду:

 setInterval(function() {
   stopWatch()
},1000);