Задать вопрос
@Aquez

Остановка цикла на несколько секунд. Как?

Суть:
У меня есть строка, которую я хотел бы воспроизводить на сайте каждые 5 секунд. Вот она:
document.body.innerHTML = document.body.innerHTML.replace('ololo', '321');

Думая как это сделать, я решил заюзать while (true) {...}, как я понимаю это бесконечный цикл, но при запуске такого у меня виснет браузер, не выдерживает похоже, думаю стоит сделать задержку в 5 секунд в цикле. И вопрос - как это сделать? Именно, что бы цикл читал вышеописанную строку, затем ПОЛНОСТЬЮ останавливался на 5 секунд, и повторялся заново.
while (true) {
    document.body.innerHTML = document.body.innerHTML.replace('ololo', '321');
    //тут нужно остановить цикл на 5 секунд, потом он по идеи должен снова воспроизводить строку выше
}


И да, если вы знаете как сделать это более адекватно, можете высказывать, буду благодарен. Сам js практически не знаю.
  • Вопрос задан
  • 1293 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
VIKINGVyksa
@VIKINGVyksa
front-end developer
Практиковать setInterval не стоит. Лучше сделать на цикл на setTimeout, это лучшая практику js.
На рекурсии что-то типо этого:
function shedule () {
    setTimeout(function(){
        //ваши действия
         console.log('interval');
          shedule(); // Рекурсивный вызов функции самой себя.

    }, 5000);
}

shedule ();
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Остановить выполнение в js невозможно, но есть функция setInterval(), которая делает ровно то, что вам нужно.

Касательно вашего кода - полностью переписывать код body плохая идея, отвалятся все обработчики событий.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
setInterval(function(){
     document.body.innerHTML = document.body.innerHTML.replace('ololo', '321');
 }, 5000);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
14 дек. 2024, в 18:10
20000 руб./за проект
14 дек. 2024, в 17:03
4000 руб./за проект