Андрей Попов - Windows Script Host для Windows 2000/XP
<table border="0" width="100%" style="font-family:Arial; font-size:10pt">
В <tr>
В </tr>
</table>
Здесь аргумент border задает ширину границ таблицы (в нашем случае границы невидимы), а в аргументе style указываются название и размер шрифта, которым будет выводиться содержимое таблицы.
В свою очередь, внутри тегов <tr> и </tr> находятся теги <td> и </td>, определяющие одну ячейку таблицы, например:
<tr>
 <td width="15%">Фамилия</td>
В <td width="85%"><input type="text" name="txtLastName" size="50"></td>
</tr>
Для тегов <td> указывается аргумент width, задающий ширину строки в процентах от общей ширины строки.
РљРЅРѕРїРєРё РІ форме выводятся РґСЂСѓРі Р·Р° РґСЂСѓРіРѕРј, нужное расстояние между РЅРёРјРё достигается СЃ помощью неразрывных пробелов (escape-последовательность  ), например:
<input type="button" value="<" name="btnPrevious">
<input type="button" value="Новая запись" name="btnNew">
Листинг 7.6. Описание формы в HTML-файле (Phone.htm)<html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Форма для записной книжки</title>
</head>
<body bgcolor="silver" scroll="no">
<form name="MainForm">
<table border="0" width="100%" style="font-family:Arial; font-size:10pt">
В <tr>
 <td width="15%">Фамилия</td>
В <td width="85%"><input type="text" name="txtLastName" size="50"></td>
В </tr>
В <tr>
В <td>РРјСЏ</td>
В <td><input type="text" name="txtName" size="50"></td>
В </tr>
В <tr>
 <td>Телефон</td>
В <td><input type="text" name="txtPhone" size="15"></td>
В </tr>
В <tr>
 <td>Улица</td>
В <td><input type="text" name="txtStreet" size="50"></td>
В </tr>
В <tr>
 <td>Дом</td>
В <td><input type="text" name="txtHouse" size="10"></td>
В </tr>
В <tr>
В <td>РљРІ.</td>
В <td><input type="text" name="txtApp" size="5"></td>
В </tr>
В <tr>
 <td>Примечание</td>
В <td><input type="text" name="txtNote" size="80"></td>
В </tr>
</table>
<br>
<input type="button" value="<<" name="btnFirst">
<input type="button" value="<" name="btnPrevious">
<input type="button" value="Новая запись" name="btnNew">
<input type="button" value="Записать" name="btnSave">
<input type="button" value="Отменить" name="btnCancel">
<input type="button" value="Удалить" name="btnDelete">
<input type="button" value=">" name="btnNext">
<input type="button" value=">>" name="btnFinal">
</form>
</body>
</html>
Создание объекта для обмена данными между XML-файлом и формой
В отличие от рассмотренного выше сценария PhoneBook.wsf, в сценарии IEPhoneBook.js функции для работы с записной книжкой не будут разделены по разным заданиям, поэтому для более четкой организации сценария мы воспользуемся объектно-ориентированным подходом и создадим два объекта Person и ListPersons, методы которых и будут осуществлять обработку данных и связь между XML-файлом и пользовательской формой.
Как и раньше, в свойствах объекта Person будет храниться запись об одном человеке. Кроме этого, мы добавим в объект Person метод LoadDialog, который будет заполнять поля ввода в форме данными из соответствующих свойств объекта Person:
//Конструктор объекта Person
function Person() {
В //Рнициализируем свойства объекта
В this.LastName="";
В this.Name="";
В this.Phone="";
В this.Street="";
В this.House="";
В this.App="";
В this.Note="";
 //Устанавливаем для метода LoadDialog указатель на
 //функцию Person_LoadDialog
В this.LoadDialog=Person_LoadDialog;
}
//Заполнение полей в форме для текущей записи
function Person_LoadDialog() {
 //Заполняем поля ввода в форме значениями соответствующих
 //свойств объекта Person
В doc.all.txtLastName.value = this.LastName;
В doc.all.txtName.value=this.Name;
В doc.all.txtPhone.value=this.Phone;
В doc.all.txtStreet.value=this.Street;
В doc.all.txtHouse.value=this.House;
В doc.all.txtApp.value = this.App;
В doc.all.txtNote.value = this.Note;
}
Принцип доступа к полям ввода формы по их именам, который используется в методе LoadDialog(), объясняется ниже (см. разд. "Обработка событий, генерируемых элементами управления формы").
Основным объектом, который обеспечивает обмен данными между XML-файлом записной книжки Рё разработанной нами формой, является объект ListPersons. Ртот объект будет содержать три свойства Рё десять методов.
Первым свойством объекта ListPersons мы сделаем массив PersonArr объектов Person; этот массив будет служить промежуточным буфером при чтении данных из XML-файла для отображения в форме и при записи измененных данных из формы в файл. В остальных двух свойствах СurRecord и IsChanged объекта ListPersons будут соответственно храниться номер текущей записи и логическое значение (true или false), являющееся признаком того, были ли изменены пользователем данные в форме.
Назначение методов объекта ListPersons СЏСЃРЅРѕ РёР· комментариев, которые приведены РІ конструкторе этого объекта (листинг 7.7).В
Листинг 7.7. Конструктор объекта ListPersonsfunction ListPersons() {
 //         Свойства объекта
 //Создаем массив PersonArr экземпляров объекта Person
В this.PersonArr = new Array();
В //Рнициализируем номер текущей записи
В this.CurRecord = 0;
 //Сбрасываем признак изменения данных в форме
В this.IsChanged = false;
 //         Методы объекта
 //Устанавливаем для методов указатели на соответствующие функции