11.JavaScript условия.

 

Хорошо, скажет заказчик. В файле 3 слова, и скрипт работает по ним, а если поставить 5 или 10 000? Тогда нужно лезть в код и править количество циклов? Ну конечно это будет неправильно. Тут мы должны доработать скрипт таким образом, чтоб он перебирал строки до тех пор, пока не появится пустая. После этого мы должны видеть сообщение, что перебор строк закончился по причине отсутствия строк. Для этого нужно написать примерно такое условие: Выбираем строку, проверяем ее, если она не пустая значит продолжаем работу, а если пустая то останавливаем перебор и выводим сообщение «Строки закончились перебрали n строк».

Для выполнения условий в джаваскрипте присутствует такая конструкция:

Тут все понятно из самого кода, но давайте разберем первую строку. Знак != это оператор сравнения. Он обозначает НЕравно, соответственно равно выглядит так ==(или так ===). Значение null  обозначают пустоту, то есть в выбранной строке ничего нет. Дословно выходит: Если в переменной zapros содержится НЕпустая строка, тогда работаем, иначе делаем то что в скобках else.

Зато сам цикл мы должны сделать вечным, и прервать его только тогда когда у нас появится пустая строка. Это будет выглядеть так:

И так по строкам. Строка первая указывает что цикл вечный, потому что 1 всегда меньше 2.

Строка 10 ставит условие, которое мы уже разобрали. Если условие не выполняется прогрмма перепрыгивает на строки 18,19,20.

То есть выводит на экран сообщение

и обратите внимание, от переменной i мы отняли 1. Это потому что нужно указать сколько успешно пройденных циклов, а так как строка у нас пуста, то по факту циклов у нес всегда будет меньше на 1. Для того чтоб программа поняла что мы отнимаем еденицу, выражение (i-1) берем в скобки.

В строке 20 вы заметили новую команду:

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

Теперь наш файлик стал универсальным. Мы можем добавлять любое количество ключевых запросов, и можем быть спокойны что скрипт пройдет по всем.

Ну что же, если вы разобрали все строки, и немного поняли как работает эта схема, то вас можно поздравить. Вы прошли 2/3 пути к озарению. Остался совсем маленький рывок. И он самый интересный. Не пугайтесь что в коде написано так много, его можно существенно упростить. И это вы будете делать сами, когда пройдете весь материал.

Перейти к следующему уроку!

  21 комментарий to “11.JavaScript условия.”

  1.  

    Как прописать экстракт урлов со страницы до тех пор, пока на странице уже не находится очередной OBJECT-LINK FPM?

    если
    TAG POS=’+i+’ TYPE=A ATTR=CLASS:»OBJECT-LINK FPM» EXTRACT=HREF’ не равно ошибке, тогда продолжить цикл. Иначе гото=следующая

  2.  

    Все просто супер! СПАСИБО!

  3.  

    Как вставить самое простое условие
    if(zapros!=null){
    //если условие верно выполняется этот код
    }
    В команду Eval в imacros ?

    •  

      Ничего подсказать к сожалению не могу. Я сразу пишу в файл .js И вам рекомендую.

  4.  

    как перебирать по очереди например черный список вк? задача например — выгрузить весь черный список в txt-файл в той очередности, в которой он есть на сайте? как копировать ссылки и вставлять их в файл тхт средствами аймакроса — понятно. не понятно как извлекать их из б.л., особенно в новом дизайне вк и как их эти ссылки (забаненных юзеров) привязать к циклу (переменной) и перебирать их по очереди.

  5.  

    У меня вопрос такого характера.Я не программист но пытаюсь немного понять суть ваших уроков.Не скрою что уроки дельные и я многому у вас научился.Хотелось бы Вам задать вопрос такого характера.Я регистрирую массово акаунты на одном забавном сайте и хотелось бы уточнить как скрипту прописать условие что бы он ожидал письмо поттверждения регистрацыи на почте?Спасибо за ответ заранее.

    •  

      Спасибо, вопрос хороший. Чаще всего авторегистратор я делаю в два захода. Первый скрипт идет и регистрирует, а второй скрипт запускаю который подтверждает по почте. Оба работают с одной и той же таблицей. Второй скрипт запускаю, например, через 5 минут. Ну и в нем все просто, вы просто записываете заход в почту, клик по ссылке которая открывает письмо с нужного сайта, и там просто переход по ссылке на сайт.
      Если вы не будете тратить время на ожидание письма, то работа будет более продуктивна. На мой взгляд.

  6.  

    только начал изучение ваших уроков,все идет здорово,спасибо за ваш труд.Есть один вопрос,как задать условие,которое бы выглядело следующим образом?-Если есть определенный элемент в известном теге,то выполняем следующий код,если нет,то обновляем страницу .

    •  

      Сложный вопрос, мнеб понять как вы вытягиваете элемент из тега. Но опишу вам стопроцентовый проверенный способ, который в любом случае вам пригодится. Если вы выполняете макросом на странице действие удачно, то возвращается положительное число. Если макрос не выполнился(элемента нет), то возвращается отрицательное чило. Это можно использовать. Например можно написать так:
      if(iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:LogOut')<0){
      iimPlayCode('REFRESH')
      }

      Другими словами если на странице не будет текстового узла LogOut то будет перезагрузка страницы.
      Но это не совсем удобно на мой взгляд, я бы лучше вместо перезагрузки сделал заход по адресу url. Это будет работать куда стабильнее. Мало ли на какую страницу вас может в теории перекинуть, и будет скрипт обновлять нейзвестную страницу. А так всегда заход по адресу, его можно сразу заткнуть в функцию например вместе со всеми действиями. И выполнять проверку если определенного тега нет, можно сделать return этой же функции, по сути у вас получится такой себе круговорот.

  7.  

    По вашим урокам собрал бот, для приглашения в группу одноклассники. Все хорошо работает, но когда доходит до закрытого профиля, то код продолжает выполняться впустую и затрачивает на выполнение много времени. Пробовал этот код:
    if(iimPlayCode(‘TAG POS=1 TYPE=A ATTR=TXT:Информация доступна только друзьям’)<0){
    //здесь код приглашения
    }
    не помогает. Не подскажете, как бы решить эту задачу другим способом.

  8.  

    Здравствуйте. Забил сейчас скрипт все как у вас, не раз сравнил вплоть до пробелов, но он у меня почему-то не останавливается, и продолжает забивать все три стоки в цикле бесконечно. т.е. на 4 строке он не останавливается а вбивает запрос из 1й строки, на 5й из 2й, на 6й из 3й, и так до бесконечно. И еще, как его остановить, он у меня уже 67 раз пробежал по кругу. Пока останавливается удалением файла zapros.txt

    •  

      поставьте галочку в настойках аймакроса «Показывать джаваскрипт во время воспроизведения»

      •  

        Вопрос в том, что у меня не срабатывает
        else {
        iimDisplay(‘Cтрока пуста, прошли строк: ‘+ (i-1))
        break
        }
        }

        Не могу понять причину. Вот скрипт полностью:

        for (i=1;1<2;i++){//создаем переменную i, цикл вечный
        var macro; // создаем переменную macro
        macro = "CODE:"; // говорим нашему скрипту что в нее впишем код аймакрос
        macro += "SET !ERRORIGNORE YES" + "\n"; // игнорирование ошибок
        macro += "SET !DATASOURCE C:\\iMacros\\Macros\\Обучение\\zapros.txt" + "\n"; // подключаем текстовый файл
        macro += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
        macro += "ADD !EXTRACT {{!COL1}}" + "\n"; // берем данные в переменную {{!COL1}}
        iimPlay(macro) // вызываем переменную запуская тем самым код, который туда вписали.
        var zapros = iimGetLastExtract(1)// создаем переменную zapros в которую помещаем EXTRACT

        if(zapros!=null){
        iimDisplay('строка '+ i +' запрос '+ zapros) //
        macro += "URL GOTO=youtube.com" + "\n"; // заходим на ютуб
        macro += "TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/results ATTR=NAME:search_query CONTENT={{!COL1}}" + "\n"; // вбиваем в поиск данные из переменной
        macro += "TAG POS=1 TYPE=BUTTON FORM=ACTION:/results ATTR=TXT:Поиск" + "\n"; // нажимаем поиск
        iimPlay(macro) // вызываем переменную запуская тем самым код, который туда вписали.
        }
        else {
        iimDisplay('Cтрока пуста, прошли строк: '+ (i-1))
        break
        }
        }

      •  

        Поддерживаю Вопрос, не останавливается цикл

        •  

          Нашел ответ на вопрос. Надо было строку macro += «SET !ERRORIGNORE YES» + «\n»; , вставлять после iimDisplay(‘строка ‘+ i +’ запрос ‘+ zapros) , тогда все четко

  9.  

    Здравствуйте. Забил сейчас скрипт все как у вас, не раз сравнил вплоть до пробелов, но он у меня почему-то не останавливается, и продолжает забивать все три стоки в цикле бесконечно. т.е. на 4 строке он не останавливается а вбивает запрос из 1й строки, 5 из 2, 6 из 3, и так до бесконечно. И еще, как его остановить, он у меня уже 67 раз пробежал по кругу. Пока останавливается удалением файла zapros.txt

  10.  

    Как реализовать поиск нужного сайта в поисковике по ключевым словам? Например, есть сайт, который необходимо найти в яндекс по какому нибудь ключевому слову…если урл сайта нет на первой странице, то жмет «далее» до тех пор пока не найдет нужный урл (именно урл, а не ключевое слово)

  11.  

    как в текстовом файле удалить выбранные в экстракт строки ?

  12.  

    Скажите как сделать условие для текста на сайте.

    Если есть данный текст на сайте делать данный код если нет то другой

    if(content.document(‘Контакт не был добавлен’)){
    // если в body есть слова Форум СисТема iMacros выполняем код
    }
    else {
    }

  13.  

    Вот скрин с сайта. Если вышел текст «контакт не был добавлен» нажать пропустить если нет текста, то нажать добавьть в друзья http://prntscr.com/lelvnr

Добавить комментарий