Я хочу повторить функцию, используя цикл for, но цикл for ничего не делает

#javascript

#javascript

Вопрос:

Я кодирую игру, используя HTML , CSS и JavaScript . И я создал функцию, которая отсчитывает p-тег в HTML-коде, но при каждом выполнении функции вычитает только одно число, поэтому мне нужно выполнять эту функцию много времени, и когда обратный отсчет равен нулю, игра заканчивается.

Я пытался вставить цикл for, но цикл for ничего не делает.

Моя JavaScript функция :

 function time() {
    for (i=0;i<30;i  ) {
        var enem = document.getElementById("enem");
        var timer = document.getElementById("timer1").innerHTML;
        var timer = parseInt(timer);
        var actime = timer - 1;
        sleep(1000).then(() => {
        timer = document.getElementById("timer1").innerHTML = actime;
        if (timer===0) {
            enem.parentNode.removeChild(enem);
            window.location.href = ('success.html');
        }
        })
        }
}
  

Я, за исключением функции result of time (), буду менять p-тег каждые 1 секунду 30 раз, но он меняется только один раз.

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

1. можете ли вы использовать асинхронную функцию или нет?

2. Я новичок, не могли бы вы объяснить, пожалуйста?

Ответ №1:

Для этого вам следует использовать функцию setInterval в Javascript.

 (function(){
var n = 30;
var tm = setInterval(countDown,1000);
var enem = document.getElementById("enem");
var timer = document.getElementById("timer1");
function countDown(){
   n--;
   if(n == 0){
      clearInterval(tm);
      enem.parentNode.removeChild(enem);
      window.location.href = ('success.html');
   }
   timer.innerHTML = n;
}})();  
 <p id="enem"></p>
<p id="timer1"></p>  

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

1. Это работает, но когда оно достигает 1, обратный отсчет прекращается.

Ответ №2:

Вы ищете setInterval() , каким образом Javascript выполняет определенное действие каждый конкретный период времени.

Опубликованный вами код не будет работать из-за неблокирующей природы Javascript, он запланирует вызов функции ожидания и перейдет к следующему циклу.

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

1. Спасибо, так мне следует подробнее прочитать о функции setInterval() ?

2. Да, вам потребуется несколько минут, чтобы разобраться в его использовании и изучить его синтаксис. Затем он должен заменить цикл for, и больше не нужно переходить в режим ожидания. Извините меня за то, что я не набираю код, но я нахожусь на своем телефоне. Позвольте мне, как это работает.