Помогите разобраться с циклом for

197
11 апреля 2017, 11:12

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

var i;
for (var i = 0; i < 12; i++) {
  var sec = 5; // Сколько секунд // Таймер
  var a = setInterval(function () {
    sec--;
    if (sec == 0) {
      $("#slide" + i).click();
      clearInterval(a);
      clearInterval(a);
    };
  }, 1000);
  var b22 = 6;// Сколько секунд // Таймер
  var a = setInterval(function () {
    b22--;
    if (b22 == 0) {
      $("#mail_box_editable").html("С Днем рождения тебя!");
      $("#mail_box_send").click();
      clearInterval(a);
    };
  }, 1000);
}

Здесь два таймера, с интервалом 5 и 6 секунд. Один отвечает за нажатия на ссылку, второй за отправку сообщения. Но почему-то код не хочет работать с циклом, а иногда и срабатывает. Код вставляю в консоль, ошибок не выдает, и по этому я не могу решить проблему самостоятельно.

Answer 1

Вам нужны не циклы, а рекурсия (с учетом асинхронной природы JavaScript). Вот пример того, как можно решить вашу задачу:

var run = function (start, limit) {
    setTimeout(function () {
        $("#slide" + start).click();
        setTimeout(function () {
            $("#mail_box_editable").html("С Днем рождения тебя!");
            $("#mail_box_send").click();
            if (start < limit) {
                run(start + 1, limit);
            }
        }, 6 * 1000);
    }, 5 * 1000);
};
run(0, 12);
READ ALSO
Onclick на AJAX элементах

Onclick на AJAX элементах

Знаю, что тема обсуждалась много раз, но вопрос все равно без ответа

251
Проблема с JQuery в расширении для Chrome

Проблема с JQuery в расширении для Chrome

При попытке создать расширение для Chrome с использованием API vkcom всё время появляется ошибка:

235
Webpack не стартует дев-сервер

Webpack не стартует дев-сервер

Приветствую всех!

381