
- •Переменные, массивы и константы
- •Примечание
- •Примечание
- •Операторы условия и цикла
- •Примечание
- •Примечание
- •Примечание
- •Примечание
- •Примечание
- •Примечание
- •Процедуры
- •VbScript предусматривает создание двух типов процедур:
- •Объектная модель и взаимодействие с элементами документа
- •Функции и объекты ядра vbScript
- •InputBox(подсказка, заголовок, умалч_знач, х, у)
- •Примечание
- •Примечание
- •Примечание
- •Примечание
Примечание
Следует аккуратно задавать все три параметра цикла For...Next. Они должны быть согласованы: если приращение положительно, то начальное значение должно быть меньше или равно конечному значению; если приращение отрицательно, то конечное значение должно быть меньше или равно начальному значению. Если это не так, то цикл For...Next не выполняется ни одного раза.
Конструкция For Each...Next позволяет организовать цикл по элементам массива или по объектам некоторого набора (семейства) объектов (см. ниже в разделе), не зная заранее число элементов в массиве или число объектов в наборе. Синтаксис этой конструкции следующий:
For Each элемент In группа
операторы
Next
Параметр группа задает имя массива или имя набора объектов. Переменная элемент на каждом шаге цикла будет содержать ссылку на элемент массива или объект набора. Цикл завершает свое выполнение, как только завершится последовательный перебор всех элементов массива или объектов набора.
Следующий фрагмент кода подсчитывает количество элементов в массиве:
Dim Ar(10)
...
Number = 0
For Each j In Ar
Number = Number + 1
Next
Document.Write "Число элементов массива равно " Number
Результатом работы данного сценария будет строка в документе:
Чиcло элементов массива равно 11
Однако как ввести объект Document в программу?
В следующем примере используется набор forms для организации цикла по числу форм в документе. Внутренний цикл по элементам набора elements формы печатает в документ значения свойства value всех элементов формы.
Пример 9.4. Отображение всех элементов форм документа
<BODY>
<FORM name="frm1">
<INPUT TYPE="checkbox" NAME="check1" value="Флажок"> Флажок
</FORM>
<FORM name="frm2">
<INPUT TYPE="checkbox" NAME="check2" value="Флажок1"> Флажок1
</FORM>
<P>
<SCRIPT language="VBScript">
For Each i In Document.forms
Document.write "<p> Форма " i.name ":"
For Each j In i.elements
Document.write "<p> Элемент: " j.value
Next
Document.write "<HR>"
Next
</SCRIPT>
</BODY>
На каждом шаге внешнего цикла переменная i содержит ссылку на форму, созданную тэгом <FORM>. Во внутреннем цикле осуществляется перебор элементов формы. Ссылка на набор elements формы указывается в качестве параметра i.elements цикла For Each. Переменная j внутреннего цикла последовательно ссылается на элементы формы, поэтому конструкция j.value дает значение параметра value элемента формы. Результат отображения страницы в окне браузера показан на рис. 9.13.
Обычно любой оператор цикла выполняется столько раз, сколько определено его параметрами, но иногда необходимо прервать выполнение цикла, например, в результате выполнения какого-либо условия. Для этих целей в VBScript существует несколько операторов Exit безусловного выхода из конструкций цикла:
Exit Do осуществляет безусловный выход из операторов группы DO... Loop
Exit For осуществляет безусловный выход из операторов For. . .Next и For Each...Next
Их можно использовать в любом месте в теле цикла, но обычно они используются совместно с операторами условиями.
Рис. 9.13. Отображение информации по элементам форм документа