В одной из записей были показаны примеры выполнения бесконечного цикла.
В предыдущей записи приводился пример, как указать условие для выхода из цикла с помощью синтаксических конструкций: do..while и var.
Теперь мы используем другой вариант.
Для это случая возьмём известный нам пример, где требуется неоднократное повторение одной iim-команды:
[code lang=»js»]
TAG POS=2 TYPE=TSPAN ATTR=* EXTRACT=TXT
TAG POS=3 TYPE=TSPAN ATTR=* EXTRACT=TXT
TAG POS=4 TYPE=TSPAN ATTR=* EXTRACT=TXT
TAG POS=5 TYPE=TSPAN ATTR=* EXTRACT=TXT
TAG POS=6 TYPE=TSPAN ATTR=* EXTRACT=TXT
TAG POS=7 TYPE=TSPAN ATTR=* EXTRACT=TXT
TAG POS=8 TYPE=TSPAN ATTR=* EXTRACT=TXT
TAG POS=9 TYPE=TSPAN ATTR=* EXTRACT=TXT
TAG POS=10 TYPE=TSPAN ATTR=* EXTRACT=TXT
TAG POS=11 TYPE=TSPAN ATTR=* EXTRACT=TXT
[/code]
Как вы помните, эта iim-команда извлекает показания процентов со страницы статистики binary.com.
Используя выше изложенные знания в JavaScript вы написали бы примерно такой код:
[code lang=»js»]
iimPlayCode(‘TAG POS=2 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
iimPlayCode(‘TAG POS=3 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
iimPlayCode(‘TAG POS=4 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
iimPlayCode(‘TAG POS=5 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
iimPlayCode(‘TAG POS=6 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
iimPlayCode(‘TAG POS=7 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
iimPlayCode(‘TAG POS=8 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
iimPlayCode(‘TAG POS=9 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
iimPlayCode(‘TAG POS=10 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
iimPlayCode(‘TAG POS=11 TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
[/code]
Синтаксически код написан корректно и будет выполняться, хотя и выглядит громоздко. Поэтому, возможно, захотите его как-то укоротить. Это возможно, например, с помощью синтаксической конструкции for(;;){}.
Вспомним, что:
- for(;;){} создаёт цикл, указав начальное состояние, условие и операцию обновления состояния; эти условия (), предусмотренные в круглых скобках, разделяются обязательным символом ; точка с запятой, сам же цикл команд выполняется внутри блока {}, то есть внутри фигурных скобок.
- В качестве начального состояния задействуем переменную, объявив её с помощью var. Присвоим ей имя count и укажем начальное значение равное 2. Полностью это будет выглядеть таким образом: var count=2.
- Условием станет задание повторить iim-команды 10 раз, пока не станет значение переменной count равным 12 после десятой итерации, так как 2+10=12. Выглядит это выражение с использованием оператор сравнения так: count!=12.
- Операцией обновления состояния послужит счёт повторяющихся iim-команд в блоке {}. Для этой цели к начальному состоянию будем прибавлять единицу после каждой итерации (повторения внутри цикла), то есть count=count+1. К счастью, в JavaScript эту арифметическую операцию, которая называется инкремент, можно сократить так: count++.
И получим примерно такой js-код:
[code lang=»js»]
for(var count=2;count!=12;count++)
{
iimPlayCode(‘TAG POS=’+count+’ TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
}
[/code]
Или равнозначный ему такой js-код:
[code lang=»js»]
var count=2;
while(count!=12)
{
iimPlayCode(‘TAG POS=’+count+’ TYPE=TSPAN ATTR=* EXTRACT=TXT’);
iimGetLastExtract(1);
count++;
}
[/code]
Чтобы посмотреть, какие значения извлекаются, объявим две переменные. Первую назовём total с начальным значением равным пустой строчке так: var total=‘‘. Затем, используя оператор присваивания, будем добавлять в него значение второй переменной по имени percent, получаемое после каждой итерации в цикле. А значение первой переменной выведем на зелёном дисплее с помощью команды iimDisplay().
В итоге получается такой js-код:
[code lang=»js»]
//var percent;
//var total=»;
//вариант объявления переменных
var percent,total=»;
var pos=’TAG POS=’;
var ext=’ TYPE=TSPAN ATTR=* EXTRACT=TXT’;
for(var count=2;count!=12;count++)
{
iimPlayCode(pos+count+ext);
percent=iimGetLastExtract(1);
//total=total+percent;
//вариант сокращённого оператора
total+=percent;
}
iimDisplay(total);
[/code]
Скачать примеры скриптов в zip-архиве.
В этом видео-ролике наглядно показан выше описанный процесс.