Как сделать этот цикл кода постоянно, как while (true)? - PullRequest
0 голосов
/ 25 января 2019

Я создал машинку, и она отлично работает. Единственная проблема в том, что я не могу сделать цикл кода. Есть ли простой способ сделать это? Где моя ошибка? Я предполагаю, что он не зацикливается, потому что если я делаю цикл, он «быстрее», чем задержка в функции.

Мой код JavaScript. Я хочу, чтобы он постоянно зацикливался, но я также попробовал обычный цикл for, и он даже тогда не зацикливается.

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();

if (dd < 10) {
  dd = '0' + dd;
}

if (mm < 10) {
  mm = '0' + mm;
}

today = dd + '/' + mm + '/' + yyyy;

var i = 0;
var txt = 'welcome to IDM...' + today + "!";
var speed = 50;
var t = true;
var loopTime = 50; // How often in milliseconds the loop should 
//be run
var intervalId = setInterval(typeWriter(), 50);

function typeWriter() {
  if (i < txt.length) {
    document.getElementById("demo").innerHTML += txt.charAt(i);
    i++;

    setTimeout(typeWriter, speed);

  } else {
    k = txt.length;
    (function theLoop(k) {
      setTimeout(function() {
        document.getElementById("demo").innerHTML =
          txt.substring(0, k);
        if (k--) {
          i--;
          // If i > 0, keep going
          theLoop(k); // Call the loop again, 
          //and pass it the current value of i
        }
      }, 200);
    })(txt.length);
  }

}

Мне нужна эта программа для постоянного цикла.

1 Ответ

0 голосов
/ 25 января 2019

Вы можете добавить свой код в большую функцию, а затем просто сделать:

function largeFunction() {
  // Add code here
}

var loopTime = 50; // How often in milliseconds the loop should be run
var intervalId = setInterval(largeFunction, loopTime);

Вот небольшой пример работы setInterval:

var count = 0;

function largeFunction() {
  document.querySelector("#count").textContent = count++;
}

var loopTime = 1E3;
var intervalId = setInterval(largeFunction, loopTime);
<div id="count"></div>

Кроме того, если вы когда-нибудь захотите остановить цикл, просто позвоните clearInterval(intervalId);

Я думаю, это то, что вы просили:

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();

if (dd < 10) {
  dd = '0' + dd;
}

if (mm < 10) {
  mm = '0' + mm;
}

today = dd + '/' + mm + '/' + yyyy;

var txt = 'welcome to IDM...' + today + "!";
var size = 0, mode = 1, speed = 50;
var intervalId = setInterval(loop, speed);

function loop() {
  if (size <= 0) {
    mode = +1;
    size = 0;
  } else if (size >= txt.length - 1) {
    mode = -1;
    size = txt.length - 1;
  }
  size += mode;
  document.getElementById("demo").innerHTML = txt.substring(0, size);
}
<div id="demo"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...