Добрый день, я написал небольшой код, который должен нажать на ссылку, сделать определенное действие, закрыть, и выполнить эти же действия снова.
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 секунд. Один отвечает за нажатия на ссылку, второй за отправку сообщения. Но почему-то код не хочет работать с циклом, а иногда и срабатывает. Код вставляю в консоль, ошибок не выдает, и по этому я не могу решить проблему самостоятельно.
Вам нужны не циклы, а рекурсия (с учетом асинхронной природы 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);
При попытке создать расширение для Chrome с использованием API vkcom всё время появляется ошибка: