Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
ВладосХацкер
0 / 0 / 0
Регистрация: 18.09.2017
Сообщений: 25
1

Js в связке с imacros (не работает условие)

18.09.2017, 16:46. Просмотров 1507. Ответов 6
Метки нет (Все метки)

Здравствуйте, возникла такая проблема. Есть скрипт в котором описано условие if(приблизительный скрипт привожу ниже). Imacros почему то не хочет ни в какую "рассматривать это условие, т.е. ошибку не выдает, скрипт запускается но не обращает внимание на условие а просто его перепрыгивает.
Javascript
1
2
3
4
5
6
7
8
iimPlay("CODE:TAG POS=1 ATTR:kakojto_text EXTRACT=TXT");
var a=iimGetLastExtract();
a=a.split(' ');
var b=a[5];
if(a=="Какой-то текст"){
c="Какой-то Текст";
};
alert(c);
В принципе использование условия в моем случае лишь вынужденная мера. Основной задачей было второе слово в извлеченном предложении сделать с большой буквы. Возможно это реализуемо как либо по другому(буду очень рад если предложите вариант).
P.S.:Чуть не забыл, версия firefox 49, версия imacros v8.7.9. Поздняя версия не подходит из за того что там не хорошо работают другие части кода.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2017, 16:46
Ответы с готовыми решениями:

Javascript создать условие через расширение iMacros в Mozilla Firefox
Всем привет! Работа с сайтом. Такая ситуация: Есть скрипт с циклом #loop.js...

Imacros, код не работает
var h for(h=1; h<=30000; h++){ URL GOTO=http://weua.info/allusers TAG POS=".h." TYPE=DIV...

Imacros условие if
Здравствуйте. Как значению пауза в WAIT SECONDS присвоить значение,которое уже задано в ...

Cups не работает в связке с samba
такое дело... 0. по протоколу ipp принтер работает с планшетом и компьютером на xp. 1. не...

Медленно работает код в связке с AutoIt
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks;...

6
diadiavova
4126 / 1507 / 459
Регистрация: 11.04.2015
Сообщений: 2,772
Записей в блоге: 35
19.09.2017, 17:52 2
Блок if для того и нужен, чтобы его перепрыгивать когда условие ложно. В данном случае в третьей строке переменной a присваивается массив, а в пятой - она сравнивается со строкой. Какого результата ты ждёшь?
0
ВладосХацкер
0 / 0 / 0
Регистрация: 18.09.2017
Сообщений: 25
19.09.2017, 21:34  [ТС] 3
diadiavova,
я опечатался. Там должно быть вот так:
Javascript
1
if(b=="Какой-то текст")
Добавлено через 6 минут
Еще есть вариант использовать для замены слова не .split() а .replace(). Но при этом все равно нужно условие, т.к. переменная a может принимать 4 различные значения, для которых необходимо выполнять замену в втором слове(или в слове после тире, например, "Пять-шесть", "шесть" надо заменить на "Шесть") маленько первой буквы на большую. Какие значения может принимать переменная известно.
0
diadiavova
4126 / 1507 / 459
Регистрация: 11.04.2015
Сообщений: 2,772
Записей в блоге: 35
19.09.2017, 21:56 4
Лучший ответ Сообщение было отмечено ВладосХацкер как решение

Решение

Цитата Сообщение от ВладосХацкер Посмотреть сообщение
Основной задачей было второе слово в извлеченном предложении сделать с большой буквы.
Конкретно для второго слова можно сделать так
Javascript
1
2
        var text = "Здравствуйте, дорогие товарищи!";
        alert(text.replace(/ ./, function (m) { return m.toUpperCase(); }))
0
ВладосХацкер
0 / 0 / 0
Регистрация: 18.09.2017
Сообщений: 25
20.09.2017, 06:25  [ТС] 5
diadiavova,
Классное решение.
А если например переменная text не будет иметь несколько слов а только одно, то как я понимаю переменная никак не изменится, или функция вернет пустое множество(не помню как это именно называется). Вообще я как понял чтобы найти второе слово там Вы используете пробел как разделител, а что если после этой команды прописать еще одну, которая будет использовать уже тире как разделитель. Тогда если слова будет два то выполнится первая "часть", а вторая просто пропустится и наоборот.(я точно не знаю как это работает и это лишь мои сугубо личные размышления, возможно ложные)
0
diadiavova
4126 / 1507 / 459
Регистрация: 11.04.2015
Сообщений: 2,772
Записей в блоге: 35
20.09.2017, 11:57 6
Цитата Сообщение от ВладосХацкер Посмотреть сообщение
А если например переменная text не будет иметь несколько слов а только одно
В принципе, все "а если..." ты мог бы и сам попробовать. В данном случае замена будет происходить только в том случае, если будет найдено соответствие регулярному выражению.
Цитата Сообщение от ВладосХацкер Посмотреть сообщение
а что если после этой команды прописать еще одну, которая будет использовать уже тире как разделитель.
Значит сначала будет выполнена первая замена, а уже результат будет обработан второй "командой".
Цитата Сообщение от ВладосХацкер Посмотреть сообщение
я точно не знаю как это работает
Это обычный реплейс. В строке ищется подстрока, если она найдена, то выполняется замена. В данном случае ищется подстрока из двух символов, первый из которых - пробел, а второй - любой другой символ. Если такая подстрока найдена, то она заменяется на такую же, только переведенную в верхний регистр. Естественно, изменение будет иметь место только в том случае, если второй символ - буква в нижнем регистре.
Данный пример - просто направление куда смотреть, поскольку при изменении задачи, он может измениться довольно сильно. Например, если надо менять не второе слово, а третье или дальше, то регулярку придется сильно подправить.

Что до способа, выбранного тобой изначально, то тут тоже непонятно, почему взят индекс 5, если второе слово надо искать по индексу 1. Ну и вообще надо было проверить, есть ли в массиве нужное количество элементов( в данном случае, как минимум, 2) и заменить что надо, а потом массив склеить по пробелам. Как-то так
Javascript
1
2
3
4
5
6
7
        var text = "Здравствуйте, дорогие товарищи!";
        var a = text.split(" ");
        if(a.length > 1)
        {
            a[1] = a[1].substr(0, 1).toUpperCase() + a[1].substring(1);
        }
        alert(a.join(" "));
Но тут опять-таки есть варианты, например между словами могут быть не только пробелы, а переносы строк и так далее и количество может удивить. Но общий принцип, я думаю, все-таки понятен.
0
ВладосХацкер
0 / 0 / 0
Регистрация: 18.09.2017
Сообщений: 25
20.09.2017, 14:41  [ТС] 7
diadiavova,
Огромное спасибо что помогли!!! Я вообщем додумал то что Вы написали и вот что вышло:
Javascript
1
2
3
4
        var text = "Factory new";
        text=text.replace(/ ./, function (m) { return m.toUpperCase(); });
        text=text.replace(/-./, function (m) { return m.toUpperCase(); });
        alert(text);
А если переменная text будет иметь в себе одно слово через тире то первая строчка просто не выполняется:
Javascript
1
2
3
4
        var text = "Field-tested";
        text=text.replace(/ ./, function (m) { return m.toUpperCase(); });
        text=text.replace(/-./, function (m) { return m.toUpperCase(); });
        alert(text);
P.S.:пишу код и пояснения для тех кто как и я будет эту тему в инете искать😊

Еще раз огромное спасибо
0
20.09.2017, 14:41
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2017, 14:41

Как работает JournalRecordProc и JournalPlaybackProc, в связке
всем привет) после оперативных и адекватных ответов на мой последний вопрос, решил испытать судьбу...

Не работает Update fibdataset в связке master-detail
Добрый день. Только начинаю знакомство с Fib. Помогите, пожалуйста. Задача простая, но не могу...

Сортировка товара методом GET не работает в связке с паджинацией
Добрый день, такая задача стоит: Сделать сортировку товара (или POST методом, с последующей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.