Цикл SetInterval до найденного элемента - PullRequest
0 голосов
/ 14 мая 2019

Привет всем, я не получаю результаты, которые я ищу с этим JavaScript.Когда я выполняю это в IE, это то, что он имеет в консоли:

Запуск

с шага 2

Шаг 1 существует!

Шаг 1 существует!

Шаг 1 существует!

Шаг 1 существует!

Шаг 1 существует!

Шаг 1 существует!

Шаг 1 существует!

и т.д. ....

Это мой код JavaScript:

javascript: (function () {
    var t = "34637",
    a = "fhh",
    l = "Rule",
    i = "baywatch",
    o = "NMN",
    n = "C",
    s = "US",
    d = "US",
    q = "M",
    m = "IA",
    p = "05/22/1994",
    y = "DL",
    z = "Ztghy663";
    console.log("Starting");
    var c = setInterval(function () {
            if ($('[title="Submit a Search"]').length) {
                console.log("Step 1 Exists!");
                clearInterval(c);
                $('[title="Submit a Search"]').click();
            }
        }, 100);
    console.log("at Step 2");
    c = setInterval(function () {
        console.log("Step 2!");
        if ($('[data-test-id="201707241746357527497-Label"]').length) {
            console.log("Step 2 Exists!");
            clearInterval(c);

            t = prompt("Please enter the number:", "");
            $('[data-test-id="2017072417423205261024660"]').val = t; /*Sets the Number textbox*/
            console.log("at Step 3");
        }
    }, 100);
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1 title="Submit a Search"> </h1>

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

Я уверен, что просто просматриваю что-то простое, но в этот момент яне могу найти что-то не так с кодом ...

1 Ответ

0 голосов
/ 14 мая 2019

Проблема заключается в том, что при сохранении в этой строке идентификатора интервала, определенного для шага 1

var c = setInterval(function () {

, вы переопределяете его с помощью этой строки, которую вы определяете для шага 2

c = setInterval(function () {

Итак, он пытается очистить интервал функции шага 2 внутри метода step1, поэтому step1 setInterval не очищается.

Вам просто нужно сохранить оба интервала в отдельных переменных, поэтомучто вы можете очистить оба.

Обновлен рабочий код.

javascript: (function () {
    var t = "34637",
    a = "fhh",
    l = "Rule",
    i = "baywatch",
    o = "NMN",
    n = "C",
    s = "US",
    d = "US",
    q = "M",
    m = "IA",
    p = "05/22/1994",
    y = "DL",
    z = "Ztghy663";
    console.log("Starting");
    var c1 = setInterval(function () {
            if ($('[title="Submit a Search"]').length) {
                console.log("Step 1 Exists!");
                clearInterval(c1);
                $('[title="Submit a Search"]').click();
            }
        }, 100);
    console.log("at Step 2");
    var c2 = setInterval(function () {
        console.log("Step 2!");
        if ($('[data-test-id="201707241746357527497-Label"]').length) {
            console.log("Step 2 Exists!");
            clearInterval(c2);

            t = prompt("Please enter the number:", "");
            $('[data-test-id="2017072417423205261024660"]').val = t; /*Sets the Number textbox*/
            console.log("at Step 3");
        }
    }, 100);
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1 title="Submit a Search"> </h1>
<h2 data-test-id="201707241746357527497-Label"> </h2>
...