Получение доступа к объектам на HTML странице с помощью технологии DOM. Формализованное описание. Листинг программы, страница 2

lessoncounter – представляет собой массив содержащий данные о количестве введенных занятий на выбранный день.

daywarn – представляет собой массив содержащий данные о распределении дней.

rcount – вспомогательная переменная.

3.1.2. Файл script.js.

Функции:

addROW() – проверяет введенные данные и при успехе проверки выполняет занесение данных в таблицу.

changeROW() – выполняет изменение данных в полях таблицы.

События: нет.

Переменные:

Ba – проверка на выполнение необходимых условий для добавления данных в таблицу.

Table – ссылка на таблицу.

z,i,cell,row – вспомогательные переменные. (исп. в циклах).

NewRow – вставка строки в таблицу.

that – вспомогательная переменная. (для запроса формы на изменение значения)

3.1.3. Команды:

prompt – запрос.

3.2. Алгоритмическая структура.

Доступ к объектам осуществляется с помощью, технологии DOM (document.getElementById и document.getElementsByTagName), согласно пунктам технического задания 1.1.

3.3. Листинг программы.

3.3.1. Листинг файла script.js

function addROW()

{

var ba = false;

var Table = document.getElementsByTagName("TBODY")[0];

// Цикла для проверки предыдущих дней, кол - ва пар и т.д....

for(var z=0; z<6; z++)

{

if(document.getElementById("weeklist").options[z].selected && z == 0 && lessoncounter[z] <6) ba = true;

if(document.getElementById("weeklist").options[z].selected && daywarn[z-1] == 1 && z != 0 && lessoncounter[z] <6) ba = true;

}

if(ba && document.getElementById("subject").value.match(/^[a-zа-я]+$/i) && document.getElementById("aud").value.match(/^[0-9]{1,3}$/))

{

var NewRow = Table.insertRow();

for(var i=0; i<6; i++)

{

// Основная цикла...

if(document.getElementById("weeklist").options[i].selected)

{   

NewRow.insertCell(0).innerHTML = document.getElementById("weeklist").options[i].text;

daywarn[i] = 1 ;

lessoncounter[i] = lessoncounter[i] + 1;

NewRow.insertCell(1).innerHTML = time[lessoncounter[i]];

NewRow.insertCell(2).innerHTML = document.getElementById("subject").value;

NewRow.insertCell(3).innerHTML = document.getElementById("aud").value;

NewRow.insertCell(4).innerHTML = document.getElementById("lessonlist").options[document.getElementById("lessonlist").selectedIndex].text;

}

}

// Цикла событий...

for(var i=rcount; i<Table.rows.length; i++)

{

var row=Table.rows[i];

for(var j=0; j<row.cells.length; j++)

{

var cell=row.cells[j];

cell.onclick=ChangeRow;

cell.style.cursor = "hand";

}

}

rcount = rcount + 1;

// *********************** \\

} else alert("Что - то нетак :E");

ba = false;

} // функция...

// Функция изменения. / Константин Юрьевич

/*

function changeROW()

{

var that;

if(event.srcElement.tagName=="TD") if(that=prompt("Че надо!?","")) event.srcElement.innerHTML = that;

}

*/

// Функция изменения. / Роман

function ChangeRow()

{

var that;

if(that=prompt("Че надо!?","")) this.innerHTML = that;

}

3.3.2. Листинг файла: index.html (блок: <script></script>)

// Входные данные...

var time = new Array("08.30 - 10.05","10.15 - 11.50","12.30 - 14.05","14.15 - 15.50","16.00 - 17.35","17.45 - 19.20","19.30 - 21.05");

var lessoncounter = new Array(-1,-1,-1,-1,-1,-1,-1);

var daywarn = new Array(0,0,0,0,0,0,0);

var rcount = 0;

Вызов события (при использовании закомментированной функции ChangeRow):

<BODY leftMargin=10 topMargin=10 onclick="changeROW();">

При использовании второго варианта функции ChangeRow – вызывать событие не требуется.

4. Вывод.

В данной лабораторной работе была реализована программа “Расписание занятий”. В программе предоставляется возможность добавления и обновления информации. Так – же ведется контроль ошибок ввода.