IF ELSEIF ELSEIF ELSEIF ELSE - как сделать?

Поддержка
  • Собственно вопрос в заголовке топика.
    Если я делаю без ELSE вообще, то скрипт просто пролетает мимо единственного правильного IF.
    Писать отдельным кодом тоже проблема - там при правильном условии IF надо или текст ввести в поле или нажать на кнопку...
    А делать вложенные - тоже не дело. Скрипт при нахождении правильного IF должен выполнить какое то действие, а потом продолжить работу, а при вложенной структуре все упирается в конец

  • @Putevka said in IF ELSEIF ELSEIF ELSEIF ELSE - как сделать?:

    Собственно вопрос в заголовке топика.
    Если я делаю без ELSE вообще, то скрипт просто пролетает мимо единственного правильного IF.
    Писать отдельным кодом тоже проблема - там при правильном условии IF надо или текст ввести в поле или нажать на кнопку...
    А делать вложенные - тоже не дело. Скрипт при нахождении правильного IF должен выполнить какое то действие, а потом продолжить работу, а при вложенной структуре все упирается в конец

    эм, делайте множество if идущих друг за другом и break внутри что бы последующие if не срабатывали

  • а что, BREAK для IF будет работать. Вроде как в инструкции написано, только для циклов
    2023-04-20_202550.png

    заранее ведь не знаешь, в каком этаже вложенности сработает условие IF. И что BREAK должен угадать число вложенных этажей, чтобы выйти из всех?

  • @Putevka said in IF ELSEIF ELSEIF ELSEIF ELSE - как сделать?:

    а что, BREAK для IF будет работать. Вроде как в инструкции написано, только для циклов

    Поместите все условия в условие "If" true и используйте действие "Break" для выхода из него

    702c311c-9f70-4881-9051-9c5d2c458ae3-изображение.png

    Тестовый скрипт: 2952.xml

  • @Fox
    без вложенности, то есть без ELSE скрипт вообще пролетает мимо истинного IF, не выполнив заданного действия

  • @Putevka said in IF ELSEIF ELSEIF ELSEIF ELSE - как сделать?:

    @Fox
    без вложенности, то есть без ELSE скрипт вообще пролетает мимо истинного IF, не выполнив заданного действия

    если ваше условие не срабатывает, значит условие возвращает "false"

  • @Fox
    Речь об конструкции без ELSE. Так в том то и дело, если делать пошагово, выполняя по одному действию, то все работает правильно, то есть из трех заданных IF одно правильное выполняется. А если нажать на кнопку Запустить скрипт, то тогда пролетает мимо

  • @Putevka said in IF ELSEIF ELSEIF ELSEIF ELSE - как сделать?:

    @Fox
    Речь об конструкции без ELSE. Так в том то и дело, если делать пошагово, выполняя по одному действию, то все работает правильно, то есть из трех заданных IF одно правильное выполняется. А если нажать на кнопку Запустить скрипт, то тогда пролетает мимо

    Значит смотрите содержимое переменных

  • вот сделал скрин из двух IF
    а по факту их может быть больше (до 5 шт)
    2023-04-26_122639.png

  • @Putevka С такими (автоматическими) селекторами у вас никогда ничего нормально работать не будет, их нужно писать самому. Авто селекторы зависят от порядка элементов на странице, но он может менять даже на разном разрешение, при появление других элементов на странице и тд Пишите селекторы сами, на форуме и в сети куча мануалов по css и xpath селекторам и большего ума там не нужно

  • понял причину, спасибо!

  • тогда попутный вопрос. Какой селектор более надежный и стабильный css, match или xpath ?

  • Всем спасибо! Разобрался с этим вопросом!

  • @Putevka said in IF ELSEIF ELSEIF ELSEIF ELSE - как сделать?:

    тогда попутный вопрос. Какой селектор более надежный и стабильный css, match или xpath ?

    match не надежный, это просто поиск по коду страницы
    css,xpath - одинаково надежны, тут как составите.

    xpath - более функционален, но нужно писать больше букв, чем в css. Я в основном использую css, когда его не хватает тогда xpath

  • @Fox
    Предложенная вами схема будет работать только при одном условии, что первый IF = true должен быть только на нулевом уровне, то есть он не может быть вложенным по отношению другим IF. Потому что когда срабатывает BREAK, то он выбивает все вышестоящие условия IF и логика скрипта нарушается...
    Тут не мешало бы присвоить числовой аргумент для BREAK

  • @Putevka said in IF ELSEIF ELSEIF ELSEIF ELSE - как сделать?:

    @Fox
    Предложенная вами схема будет работать только при одном условии, что первый IF = true должен быть только на нулевом уровне, то есть он не может быть вложенным по отношению другим IF. Потому что когда срабатывает BREAK, то он выбивает все вышестоящие условия IF и логика скрипта нарушается...
    Тут не мешало бы присвоить числовой аргумент для BREAK

    Да, можно было сделать так. Либо использовать доп переменную в условиях, значение которой меняется при срабатывании условия. Такой вариант более понятно выглядит при использовании циклов с вызовом функций, с числовым break в этом случае не очень понятно из какого условия или цикла оно выведет точку выполнения