Лабораторна робота № 4

Робота з об'єктом Document

4. Об'єкт document

Для роботи з документами HTML у мові JavaScript мається окремий об'єкт із назвою document. Користаючись его властивостями і методами, сценарій JavaScript може одержати інформацію про поточний документі, завантаженому у вікно браузера, а також керувати відображенням умісту цього документа.

Перед тим, як перейти до опису властивостей і методів об'єкта document, варто розглянути призначення окремих параметрів оператора <BODY>.

У загальному виді цей оператор виглядає в такий спосіб:

 

<BODY

BACKGROUND="Фонове_зображення"

BGCOLOR="Колір_тла"

TEXT="Колір_тексту"

LINK="Колір_непосещенных_посилань"

ALINK="Колір_активізованих_посилань"

VLINK=" Колір_посещенных_посилань "

onLoad="Оброблювач_події_при_завантаженні_документа"

onUnload="0бработчик_події_при_вивантаженні_документа"

</BODY>

 

Опис параметрів оператора приведено нижче:

Параметр                 Опис

BACKGROUND ЗА допомогою цього параметра можна вказати адреса URL зображення, що заповнює фон тіла документа

BGCOLOR           Параметр BGCOLOR застосовується в тих випадках, коли тло документа необхідно розфарбувати в який-небудь колір. Колір задається у виді "#rrggbb", де константи rr, gg і bb - відповідно червоний, зелений і блакитний компоненти кольору. Значення констант може знаходитися в діапазоні від 0 до FF (у шестнадцатеричном виді). Колір може також задаватися символічними константами, такими, як red чи white

TEXT    Колір тексту. Задається так само, як і колір тла BGCOLOR LINK Параметр LINK визначає колір посилань, розміщених у документі HTML і ще не посещенных користувачем

ALINK                                  Цей параметр визначає колір посилань, обраних користувачем

VLINK  Параметр VLINK визначає колір посилань, розміщених у документі HTML, що уже відвідувалися користувачем раніше

OnLoad                ЗА допомогою параметра onLoad можна визначити оброблювач події, що одержить керування при завантаженні документа у вікно браузера

OnUnload            Аналогічно попередньому, однак оброблювач події одержить керування при видаленні документа з вікна браузера

Аналізуючи властивості об'єкта document, сценарій JavaScript може визначити значення перерахованих вище параметрів. Крім того, сценарію доступні локальні мітки, форми і зв'язки документа как елементи відповідних масивів, а також інформація з заголовка документа.

4.1. Властивості об'єкта document

Перелічимо властивості об'єкта document, доступні сценарію JavaScript:

Властивість             Опис

alinkColor                             Уміст параметра ALINK

anchors                Масив локальних міток, розміщених у документі. Ці мітки застосовуються для організації посилань усередині документа

applets  Масив об'єктів, що відповідають апплетам Java, розташованим у документі HTML

bgColor                                 Уміст параметра BGCOLOR

cookie   Значення cookie для поточного документа. Про те, що це таке, буде розказано в останній главі

embeds                                 Масив об'єктів plug-in, що містяться в документі HTML

fgColor                                  Уміст параметра TEXT

forms                                     Масив, що містить у виді об'єктів усі форми, розташовані в документі HTML

images                                   Масив растрових зображень, включених у документ

lastModified                        Дата останньої зміни документа HTML

linkColor                               Уміст параметра LINK

links                                       Масив, що містить усі посилання в документі HTML

location                                 Повна адреса URL документа HTML

referrer                                  Адреса URL зухвалого документа HTML

title                                        Заголовок документа, заданий за допомогою оператора <TITLE>

URL                                       Повна адреса URL документа HTML

vlinkColor                             Уміст параметра VLINK

Об'єкт document може містити в собі інші об'єкти, доступні как властивості:

Властивість             Опис

Anchог                                 Локальна мітка, визначена в документі HTML за допомогою оператора <А>

Form                                      Форма, обумовлена в документі HTML за допомогою оператора <FORM>

history                                  Список адрес URL, посещенных користувачем

link        чи текст зображення, що грають роль гіпертекстового посилання. Створюється за допомогою оператора мови HTML <A> у який додатково задаються оброблювачі подій' onClick і onMouseOver

4.2. Методи об'єкта document

Сценарії JavaScript можуть викликати наступні п'ять методів визначених в об'єкті document:

Метод                       Опис

сlеаг                       Видалення вмісту документа з вікна перегляду

close      Закриття потоку даних, відкритого для документа методом open. У вікні будуть відображені вес зміни вмісту документа, зроблені сценарієм після відкриття потоку

open      Відкриття вихідного потоку для запису в документ НТМ даних типу MIME    за допомогою методів write і writein

write                       Запис у документ довільної конструкції мови HTML

writeln                   Аналогічно попередньому, але наприкінці рядка додається символ нового рядка

4.3. Колірне оформлення документа

Більшість властивостей об'єкта objects доступно сценарію JavaScript как для читання, так і для запису. Спочатку спробуємо динамічно змінити колірне оформлення документа HTML

Сценарій змінив п'ять властивостей документа HTML - колір тла і тексту, а також кольору посещенных, не посещенных і обраних користувачем посилань (листинг 4.1).

 

Листинг 4.1. Файл chapter2/ColorLinks/ColorLinks.html

<HTML>

<HEAD>

<TITLE>Color Links</TITLE>

<SCRIPT LANGlJAGE="JavaScript">

<!--

document.bgColor = "#00FF80";

document.fgColor = "#800080";

document.linkCoior = "#000000";

document.alinkColor = "#FF0000";

document.vlinkColor = "#4000FF";

//-->

</SCRIPT>

</HEAD>

<BODY BGCOLOR=white>

<Н1>Зміна колірного оформлення</Н1>

<Р>Відвідаєте ці сервери:

<Р><A HREF="http: //www.glasnet. ru/~frolov/index.html">Hаша домашня сторінка</А>

<P><A HREF="http://www. auramedia. ru">Каталог програм Auramedia</A>

<P><A HREF="http://www.microsoft.corn/Java/">Сторінка cервера Microsoft про Java</A>

<P><A HREF="ColorLinks.html#локальный роздягнув ">Локальний розділ</А>

<HR>

<Н1><А NAME="Локальний розділ">Локальний розділ</А></H1>

<Р>Цей локальний розділ ви можете переглянути, навіть якщо ваш комп'ютер не підключений до Internet

</BODY>

</HTML>

 

Зверніть увагу, що сценарій перевизначає колір фона, заданий параметром BGCOLOR в операторі <BODY>:

 

document.bgColor = "#00FF80";

 

4.4. Посилання і метки в документі

Як вже розповідалося, для того щоб вставити в документ HTML чи посилання локальну мітку, необхідно використовувати оператор <А>. У загальному виді цей оператор представлений нижче

 

<A НRЕ=Адреса URL чи локальна мітка

NАМЕ="Ім'я локальної мітки"

ТАRGЕТ="Ім'я вікна"

onClick="06pa6oтчик події: щиглик по посиланню"

оnмоusеоvег="Оброблювач події: курсор над посиланням">

Текст посилання

</А>

 

Опис параметрів оператора <А> приведено нижче:

Параметр                 Опис

HREF    Параметр HREF задає адреса URL чи ім'я локальної мітки документа, куди буде зроблений перехід по посиланню

NAМЕ  Якщо зазначений параметр NAME, оператор <А> визначає локальну мітку. Значення цього параметра задає ім'я метки

TARGET              Параметр TARGET задає ім'я вікна, куди буде завантажений документ при виконанні посилання. Це може бути ім'я існуючого вікна фрейму, визначеного за допомогою оператора <FRAMESET>, чи одне з наступних зарезервованих імен - _top, _parent, _self, чи _blank

OnClick За допомогою параметра onClick можна визначити оброблювач події, що одержить керування, коли користувач зробить щиглика лівою клавішею миші по посиланню

OnMouseOver    Аналогічно попередньому, однак оброблювач події одержить керування, коли користувач розмістить курсор миші над посиланням

Для кожного посилання, розміщеної в документі HTML, створюється окремий об'єкт. Усі такі об'єкти знаходяться в об'єкті документа Document как елементи масиву links.

Сценарій JavaScript може визначити властивості кожного посилання, розташованої в документі HTML, аналізуючи елементи об'єкта links. От список цих властивостей:

Властивість             Опис

bash                                      Ім'я локального посилання, якщо вона визначена в адресі URL

host                                       Ім'я вузла і порт, зазначені в адресі URL

hostname             Ім'я вузла і доменне ім'я вузла мережі. Якщо доменне ім'я недоступне, замість нього вказується адреса IP

href                                        Повна адреса URL

pathname                              Шлях до об'єкта, зазначений в адресі URL

port       Номер порту, використовуваного для передачі даних із сервером, зазначеним у даному посиланні

protocol               Рядок назви протоколу передачі данных (включающая символ "двокрапка"), зазначеного в посиланні

search                                   Рядок запиту, зазначений в адресі URL після символу ?

target                                     Значення параметра TARGET, задане в посиланні

length   Кількість елементів у масиві links, то кількість посилань у поточному документі HTML

Приклад документа, з формою, списком і кнопкою Jump заповнює список посиланнями, розміщеними в документі HTML.

Вибравши зі списку посилання і натиснувши кнопку Jump, можна завантажити у вікно браузера документ, зазначений у цьому посиланні, чи запустити поштову програму для підготовки і відправлення повідомлення (якщо обране посилання на адресу електронної пошти).

Тому що список посилань формується сценарієм динамічно, нові посилання, додані в документ HTML, з'являться в списку автоматично без додаткових зусиль по редагуванню сценарію.

У нижній частині цього ж документа HTML сценарій відображає детальну інформацію з кожного посилання, витягнуту з властивостей об'єктів класу links, що відповідають посиланням.

Спочатку виводяться властивості першого посилання, що містить адресу головної сторінки нашого сервера Web у мережі Internet:

 

http://www.glasnet.ru/~frolov/index.html

host: www.glasnet.ru:80

hostname: www.glasnet.ru

href: http://www.glasnet.ru/~frolov/index.html

pathname: ~frolov/index.html

port: 80

protocol: http:

search:

target:

 

Тому що в цьому посиланні зазначена повна адреса URL, що включає шлях файлу документа index.html, то цей шлях записується у властивість з ім'ям pathname.

Хоча порт, з використанням якого встановлюється з'єднання із сервером Web, не зазначений, у властивості host і port записується значення, застосовуване для цієї мети за замовчуванням, а саме 80.

Можна розглянути наступне посилання:

 

http://www.auramedia.ru/

host: www.auramedia.ru:80

hostname: www.auramedia.ru

href: http://www.auramedia.ru/

pathname:

port: 80

protocol: http:

search:

target:

 

Тут шлях до файлу документа HTML не зазначена, тому властивість pathname містить порожній рядок.

У посиланні на сервер Microsoft зазначений шлях до каталогу Java:

 

http://www.microsoft.com/java/

host: www.microsoft.com:80

hostname: www.microsoft.com

href: http://www.microsoft.com/java/

pathname: Java/

port: 80

protocol: http:

search:

target: newwnd

 

Цей частковий шлях виявився записаним у властивість pathname. Kрім того, для відображення вмісту сервера Microsoft повинне бути створене нове вікно. Ім'я цього вікна задано як newwnd у параметрі TARGET оператора <А>. За допомогою цього оператора розміщене посилання в документі НTML. Ім'я вікна виявилося записане у властивість target.

Останнє посилання - це адреса електронної пошти:

 

mailto:frolov@glas.apc.org

host:glas.apc.org

hostname: glas.apc.org

href: mailto:frolov@glas.apc.org

pathname:

port:0

protocol: mailto:

search:

target:

 

У властивості protocol даного посилання записаний рядок "mailto:". Нижче розглянутий вихідний текст документа HTML, що містить сценарій JavaScript, що працює з посиланнями (листинг 4.2).

 

Листинг 4.2. Файл chapter2/LinksList/LinksList.html

<HTML>

<HEAD>

<TITLE>Links and Anchors</TITLE>

<SCRIPT LANGUAGE="JavaScript">

<!--

function urlJump()

{

var szNewURL="";

szNewURL=

.document.links[Sel.ListOfLinks.selected Index];

window.location.href=szNewURL;

}

//-->

</SCRIPT>

</HEAD>

<BODY BGCOLOR=white>

<Н1>Перегляд посилань</Н1>

<FORM NAME="Sel">

<SELECT NAME="ListOfLinks">

</SELECT>

<INPUT TYPE="button" VALUE="Jump!" onClick="urlJump();">

</FORM>

<Р>Відвідаєте ці сервери:

<Р><А HREF="http://www.glasnet.ru/~frolov/index.html">Haшa домашня сторінка</А>

<BR><A HREF="http://www .auramedia.ru">Каталог програм Auramedia</A>

<BR><A HREF="http://www.microsoft.corn/Java/" TARGET="newwnd">Cтpaница сервера Microsoft про Java</A>

<Р>Пишіть нам за адресою: <А HREF="mailto:frolov@glas.арі.org">frolov@glas.apc.org</A>

<HR>

<Н1>Список посилань</Н1>

<Р>Цей список сформований динамічно сценарієм JavaScript</P>

<SCRIPT LANGUAGE="JavaScript">

<!--

elem=new Array();

for(i=0; i<document.links.length; i++)

{

elem[i]=new Option("Elem" + i, i, false, false);

Sel.ListOfLinks.options [i]=elem[i];

Sel.ListOfLinks.options[i].text=document.links[i];

document.write("<HR>");

var szText=document.links[i] + "<BR>";

document.write(szText.bold());

document.write("host: ".italics() + document.links[i].host + "<BR>");

document.write("hostname: ".italics() + document.links[i].hostname + "<BR>");

document.write("href: ".italics() + document.links[i].href + "<BR>");

document.write("pathname: ".italics() + document.links[i].pathname + "<BR>");

document.write("port: ".italics() + document.links[i].port + "<BR>");

document.write("protocol: ".italics() + document.links[i].protocol + "<BR>");

document.write("search: ".italics() + document.links[i].search + "<BR>");

document.write("target: ".italics() + documerit. links [i] .target + "<BR>");

}

Sel.ListOfLinks.selectedIndex=0;

//-->

</SCRIPT>

</BODY>

</HTML>

 

У секції заголовка документа HTML визначена функція urlJump, що завантажує у вікно браузера об'єкт, що відповідає обраної в списку посиланню:

 

function urlJump()

{

var szNewURL="";

szNewURL =

document.links[Sel.ListOfLinks.selectedlndex];

window.location.href=szNewURL;

}

 

Список посилань, а також кнопка Jump, що служить для активізації обраного посилання, визначені в такий спосіб:

 

<FORM NAME="Sel">

<SELECT NAME="ListOfLinks">

</SELECT>

<INPUT TYPE="button" VALUE="Jump!" onClick="urlJump();">

</FORM>

 

Ім'я форми, необхідне сценарію JavaScript для доступу до списку і кнопки, визначено в параметрі NAME оператора <FORM> как Sel.

Список з ім'ям ListOfLinks створиться оператором <SELECT>. Спочатку в списку не має ні елемента. Всі елементи будуть додані в список сценарієм JavaScript.

Кнопка Jump активізує функцію urlJump, для чого в її визначенні зазначений оброблювач події onClick.

Функція urUump адресується до обраного елемента списку в такий спосіб:

 

szNewURL = document.links[Sel.ListOfLinks.selectedIndex];

 

Тут узята форма Sel і зазначена ім'я списку ListOfLinks как ім'я одного з властивостей форми. Номер виділеного елемента списку знаходиться у властивості списку з ім'ям selectedIndex.

Сценарій заповнює масив посилань links і список Sel.ListOfLinks таким чином, що перший елемент масиву links відповідає першому посиланню в списку, другий елемент масиву - другому елементу і т.д. Тому вираження Sel.ListOfLinks.selectedIndex є номером посилання масиві links, яку необхідно активізувати. Функція urlJump записує це посилання в змінну szNewURL, а потім установлює значення властивості window, location, href.

У сценарії JavaScript, визначеному в тілі документа HTML, створюється масив elem:

 

elem=new Array();

 

Цей масив призначений для збереження елементів динамічно формованого списку, визначеного порожнім у формі Sel.

Далі в сценарії розташовується цикл по всіх посиланнях, розміщеним у документі HTML:

 

for(i=0; i<document.links.length; i++) {

...

}

 

Кількість посилань знаходиться у властивості length об'єкта links, тому змінна циклу i змінює своє значення від 0 до document.links. length.

У циклі створюється новий елемент списку і записується в нього текст посилання:

 

elern[i] = new Option("Elem" + i, i, false, false);

Sel.ListOfLinks.options [ i] = elem[i];

Sel.ListOfLinks.options[i].text = document.links[i];

 

Текстовий рядок, що відповідає посиланню, витягається з масиву links как document. links[i].

Після запису в документ HTML розділової лінії сценарій записує в нього текст посилання, виділяючи его жирним шрифтом:

 

document.write("<HR>");

var szText=document.links [i] + "<BR>";

document.write(szText.bold());

 

Слідом за цим у документ HTML записуються усі властивості посилання, витягнуті з поточного елемента масиву links. Наприклад, ім'я вузла і номер порту витягаються і записуються в документ HTML у такий спосіб:

 

document. write ( "host: ".italics() + document.links[i].host + "<BR>");

 

Останнє, що робить сценарій уже після завершення циклу, - це виділення першого елемента в списку Sel. ListOfLinks:

 

Sel.ListOfLinks.selectedIndex=0;

 

Для цього номера виділюваного елемента (у даному випадку це 0) записується у властивість списку з ім'ям selectedIndex.

4.6. Убудований клас Math

4.6.1. Властивості

Усі властивості класу є математичними константами, тому сценарій JavaScript не може змінювати їхнє значення.

Е

Ця властивість являє собою константу е. Приблизне значення цієї константи дорівнює 2,72. От приклад використання властивості Е:

 

var nЕ;

n = Math.E;

 

Тут записується в змінну n значення константи е.

РI

Властивість PI - це число п. Вона також є константою з приблизним значенням, рівним 3,14. Приклад використання властивості PI:

 

var nL;

var nR;

n = 2 * Math.PI * n;

 

Тут властивість PI використовується для обчислення довжини окружності по її радіусі. Обчислення виконується по наступній формулі:

 

l = 2п

 

де R - радіус окружності.

LN2

Властивість LN2 - константа зі значенням натурального логарифма числа 2, тобто ln2. Приклад використання:

 

var nValue;

nValue = Math.LN2;

 

LN10

Властивість LN10 - константа зі значенням натурального      логарифма числа 10, тобто ln 10. Приклад використання:

 

var nValue;

nValue = Math.LN10;

 

LOG2E

Ця властивість є константою зі значенням, рівним логарифму числа 2 за основою е, то loge2. Приклад використання:

 

var nValue;

nValue = Math.LOG2E;

 

LOG10E

Властивість LOG10E - це логарифм числа е за основою 10, тобто log10e. Приклад використання:

 

var nValue;

nValue = Math.LOG10E;

 

SQRT2

Властивість SQRT2 - це значення квадратного кореня з двох. Приклад використання:

 

var nValue;

nValue = Math.SQRT2;

 

SQRT1_2

Властивість SQRT1_2 - це значення квадратного кореня з 0,5. Приклад використання:

 

var nValue;

nValue = Math.SQRTl_2;

 

4.6.2. Методи

Перелічимо методи класу Math.

abs

Обчислення абсолютного значення. Приклад використання:

 

var nValueAbs;

nValueAbs = Math.abs(nValue);

 

Тут у змінну nValueAbs записується абсолютне значення змінної nValue.

acos

Обчислення арккосінуса. Приклад використання:

 

var nValue;

nValue = Math.acos(nAngle);

 

asin

Обчислення арксінуса. Приклад використання:

 

var nValue;

nValue = Math.asin(nAngle);

 

atan

Обчислення арктангенса. Приклад використання:

 

var nValue;

nValue = Math.atan(nAngle);

 

ceil

Обчислення найменшого цілого значення, більшого чи рівного аргументу функції. Приклад використання:

 

var nValue;

nValue = Math.ceil(nArg);

 

cos

Обчислення косінуса. Приклад використання:

 

var nValue;

nValue = Math.cos(nAngle);

 

exp

Експонентна функція, значення якої дорівнює числу е, зведеному в ступінь аргументу функції. Приклад використання:

 

var nValueExp;

nValueExp = Math.exp(nValue);

 

floor

Обчислення найбільшого цілого значення, меншого чи рівного аргументу функції. Приклад використання:

 

vaг nValue;

nValue = Math.floor(nArg);

 

log

Обчислення натурального логарифма аргументу функції. Приклад використання:

 

var nValue;

nValue = Math.log(nArg);

 

max

Визначення найбільшого з двох значенні. Приклад використання:

 

var nValue1;

var nValue2;

var nValueMax;

nValueMax = Math.max(nVaiue1 nVaiue2);

 

min

Визначення найменшого з двох значень. Приклад використання:

 

var nVaiue1;

var nValue2;

var nValueMin;

nValueMin = Math.min(nVaiue1, nVaiue2);

 

pow

Зведення числа в заданий ступінь. Приклад використання:

 

var nValue;

nValue = Math.pow(2, 3);

 

Тут число 2 зводиться в ступінь 3, а результат, рівний восьми, записується в змінну nValue.

random

Метод random повертає випадкове число в інтервалі від 0 до 1. Приклад використання:

 

var nRandomValue;

nRandomValue = Math.random();

 

round

Метод round призначений для виконання округлення значення аргументу до найближчого цілого. Якщо десяткова частина числа дорівнює 0,5 чи більше цього значення, то виконується округлення у велику сторону, якщо менше - у меншу. Приклад використання:

 

var  nValue;

nValue = Math.round(1.8);

 

Після виконання округлення значення nValue буде дорівнює двом.

sin

Обчислення сінуса. Приклад використання:

 

var nValue;

nValue = Math.sin(nAngle);

 

sqrt

Обчислення квадратного кореня від аргументу. Приклад використання:

 

var nValueSqrt;

nValueSqrt = Math.sqrt(nArg);

 

tan

Обчислення тангенса. Приклад використання:

 

var nValue;

nValue = Math.tan(nAngle);

 

4.7. Убудований клас Date

4.7.1. Конструктори класу Date

Для використання більшості методів класу Date необхідно створити об'єкт цього класу за допомогою одного з трьох конструкторів.

Конструктор першого виду викликається в такий спосіб:

 

var dtNewDate;

dtNewDate = new Date();

 

Тут створюється об'єкт Date, у якому зберігається інформація про поточну дату і час. Цей час задається за Гринвічем чи, користаючись більш сучасним визначенням, з використанням часу Universal Coordinated Time.

Конструктор другого виду дозволяє вказати дату через єдиний параметр:

 

var dtNewDate;

dtNewDate = new Date(nMilliseconds);

 

Параметр nMilliseconds задає дату в мілісекундах, вважаючи від 1 січня 1970 року.

Конструктор третього виду призначений для роздільної установки компонентів дати й у багатьох випадках більш зручний для використання:

 

var dtNewDate;

dtNewDate = new Date (year, month, date, hours, min, sec, ms);

 

Параметри цього конструктора описані нижче:

Параметр                 Опис

year                                       Рік, наприклад 1998 чи 2012

month                                    Номер місяця від 0 (січень) до 11 (грудень)

date                                       Календарна дата, задається в діапазоні від 1 до 31

hours    Необов'язковий параметр, що задає перша година дня в діапазоні від 0 до 23. Ви зобов'язані вказувати цей параметр тілько в том випадку, якщо заданий параметр min

min        Необов'язковий параметр, що задає хвилини в діапазоні від 0 до 59. Ви зобов'язані вказувати цей параметр тілько в тому випадку, якщо заданий параметр sec

sec         Необов'язковий параметр, що задає секунди в діапазоні від 0 до 59. Ви зобов'язані вказувати цей параметр тілько в тому випадку, якщо заданий параметр ms

ms                                          Необов'язковий параметр, що задає миллисекунды в діапазоні від 0 до 999

getDate

Визначення дати, що зберігається в об'єкті класу Date. Метод повертає значення календарної дати в діапазоні від 1 до 31. Приклад використання:

 

var dtNewDate;

var nDate;

dtNewDate = new Date();

nDate = dtNewDate.getDate();

 

getDay

Визначення номера дня тижня, що зберігається в об'єкті класу Date. Метод повертає 0 для неділі, 1 - для понеділка, і т.д. Приклад використання:

 

nDay = dtDate.getDay();

 

getHours

Визначення кількості годин, що пройшли після півночі. Приклад використання:

 

nHours = dtDate.getHours();

 

getMinutes

Визначення кількості минут, що пройшли після початку години. Приклад використання:

 

nMinutes = dtDate.getMinutes();

 

getMonth

Визначення кількості місяців, що пройшли із січня. Приклад використання:

 

nMonth = dtDate.getMonth();

 

getSeconds

Визначення кількості секунд, що пройшли з початку хвилини. Приклад використання:

 

nSeconds = dtDate.getSeconds();

 

getTime

Визначення часу для заданого об'єкта класу Date. Метод getTime повертає кількість миллисекунд, що пройшли з 1 січня 1970 року. Приклад використання:

 

nMilliseconds = dtDate.getTime();

 

getTimeZoneOffset

Визначення зсуву локального часу щодо часу за Гринвічем (у мілісекундах). Приклад використання:

 

nOffsetMilliseconds = dtDate.getTimeZoneOffset();

 

getYear

Метод getYear повертає рік, що зберігається в об'єкті класу Date. Приклад використання:

 

nYear = dtDate.getYear();

 

parse

Метод parse повертає кількість мілісекунд, що пройшли з 00 годин 00 хвилин 1 січня 1970 року по час, зазначений у параметрі функції. Для виклику цього методу вам не потрібно створювати об'єкт класу Date, а можна просто послатися на ім'я цього класу:

 

nMS = Date.parse(szDataString);

 

Через параметр szDataString ви можете вказати час, наприклад, так:

 

"12 Oct 1998 12:00:00"

"12 Oct 1998 12:00:00 GMT"

"12 Oct 1998 12:00:00 GMT+0330"

 

Перша з цих рядків задає локальну дату і час, друга - дату і час за Гринвічем, і, нарешті, остання - час і дату за Гринвічем сo зсувом на 3 час. і 30 хв.

Метод parse звичайно застосовують разом з конструктором об'єкта Date чи з методом setTime, що ми розглянемо нижче.

setDate

Метод setDate використовується для установки календарної дати в об'єкті клacca Date. Приклад використання:

 

dtNewDate.setDate(nDateNumber) ;

 

Параметр nDateNumber може приймати значення від 1 до 31.

setHours

Метод setHours використовується для установки кількості годин, що пройшли після півночі, в об'єкті класу Date. Приклад використання:

 

dtNewDate.setHours (nHours);

 

Параметр nHours може приймати будь-які позитивні чи негативні значення. При необхідності відбувається відповідне і зміна календарної дати, записаної в об'єкті класу Date.

setMinutes

Метод setMinutes використовується для установки кількостіхвилин, що пройшли після початку години, в об'єкті класу Date. Приклад використання:

 

dtNewDate.setMinutes(nMinutes);

 

Параметр nMinutes може приймати будь-які позитивні чи негативні значення. При необхідності відбувається відповідна зміна календарної дати, записаної в об'єкті класу Date.

setMonth

Метод setMonth використовується для установки номера місяця, що пройшов з початку року, в об'єкті класу Date. Приклад використання:

 

dtNewDate.setMonth(nMonth);

 

Параметр nMonth може приймати будь-які позитивні чи негативні значення. При необхідності відбувається відповідна зміна календарної дати, записаної в об'єкті класу Date.

setSeconds

Метод setSeconds використовується для установки кількості секунд, що пройшли з початку хвилини, в об'єкті класу Date. Приклад використання:

 

dtNewDate.setSeconds(nSeconds);

 

Параметр nSeconds може приймати будь-які позитивні чи негативні значення. При необхідності відбувається відповідна зміна календарної дати, записаної в об'єкті класу Date.

setTime

За допомогою методу setTime можна установити дату в об'єкті класу Date, що відповідає заданій кількості мілісекунд, що пройшли після 1 січня 1970 року. Приклад використання:

 

dtNewDate.setTime(nMilliseconds);

 

setYear

Метод setYear використовується для установки номера року, в об'єкті класу Date. Приклад використання:

 

dtNewDate.setYear(nsetYear);

 

toGMTString

Метод toGMTString призначений для перетворення дати в рядок, записаний у стандартному форматі часу за Гринвічем (GMT).

toLocaleString

Аналогічно попередньому, однак замість часу GMT використовується локальний час.

UTC

Метод UTC перетворює дату, задану параметрами методу, у кількість мілісекунд, що пройшли з 1 січня 1970 року.

При використанні методу UTC, так само як і методу parse, немає необхідності створювати об'єкт класу Date:

 

nMillisecond = Date.UTC(year, month, date, hours, min, sec, ms);

 

Параметри методу UTC задаються в такий же спосіб, як і описані вище параметри конструктора об'єкта класу Date третього виду.

4.8. Убудовані функції

У цьому розділі перераховані декілька корисних убудованих функцій, які можна використовувати в сценаріях JavaScript.

eval

Функція eval призначена для перетворення текстового рядка в чисельне значення. Через єдиний параметр вона одержує текстовий рядок і обчислює її як вираження мови JavaScript. Функція повертає результат обчислення:

 

vаг nValue = Eval(szStr);

 

parseInt

Ця функція призначена для перетворення текстового рядка в целочисленне значення. Рядок передасться функції через параметр:

 

var nValue = parseInt(szStr);

 

parseFloat

Функція parseFloat намагається перетворити текстовий рядок у число з плаваючою крапкою. Текстовий рядок передається цієї функції через перший параметр, а підстава числення - через другий:

 

var nFloat = parseFloat(szStr, nRadix);

 

escape

За допомогою функції escape сценарій JavaScript може закодувати текстовий рядок із застосуванням URL-кодування. У цьому кодуванні спеціальні символи, такі, як "пробіл" чи "табуляція", перетворюються до наступного виду: %ХХ, де XX - шістнадцятеричний код символу. Приклад використання цієї функції:

 

var szURL = escape(szStr);

 

unescape

Функція unescape, виконує дію, прямо протилежне дії функції unescape - перекодує рядок з URL-кодування в звичайний текстовий рядок:

 

var szStr = unescape(szURL);

 

4.9. Плавна зміна кольору фону документа HTML

При перегляді сторінки деяких серверів Web, можна звернути увагу, що колір їх фону починає плавно змінюватися відразу після завантаження, стаючи поступово чи світліше, навпаки, темніше. Аналогічний ефект може бути отриманий не тільки для кольору фону, але і для кольору тексту, а також гіпертекстових посилань. Можна зробити, наприклад, так, щоб рядка тексту поступово виявлялися на фоні чи сторінки зникали (щоб відвідувач не встиг їх прочитати).

Складний на перший погляд ефект досягається надзвичайно просто: зміною властивості bgColor об'єкта document. У листинге 4.3 приведений приклад сценарію, що після завантаження документа HTML у вікно браузера змінює колір его тла з білого на чорний.

 

Листинг 4.3. Файл chapter2/ChangeBkg/ChangeBkg.html

<HTML>

<HEAD>

<TITLE>Color Links</TITLE>

<SCRIPT LANGUAGE="JavaScript">

<!--

var nRed = 255;

var nGreen = 255;

var nBlue = 255;

function colorShift()

{

var cmd = "colorShift()";

document.bgColor = "#" +

dec2hex(nRed) +

dec2hex(nGreen) +

dec2hex(nBlue);

if(nRed > 0)

{

nRed -= 10;

nGreen -= 10;

nBlue -= 10;

}

timer = window.setTimeout(cmd, 50);

}

function dec2hex(nDec)

{

var szHexTable = "0123456789ABCDEF";

var szResult = "";

var szBuf = "";

var nRem = 0;

var bNegative = false;

if(nDec < 0)

{

bNegative=true;

nDec = -nDec;

}

nTmp = nDec;

while(true)

{

nRem = nTmp % 16;

nTmp = nTmp / 16;

if(Math.floor(nTmp) < 16)

break;

szBuf = szHexTable.charAt(nRem);

szResult = szBuf.concat(szResult);

}

szBuf = szHexTable.charAt(nRem);

szResult = szBuf.concat(szResult);

if(Math.floor (nTmp) != 0)

{

szBuf = szHexTable.charAt(Math.floor(nTmp));

szResult = szBuf.concat(szResult);

}

if(bNegative == true)

return("-" + szResult);

else

return szResult;

}

//-->

</SCRIPT>

</HEAD>

<BODY BGCOLOR=white>

<Н1>Зміна колірного оформлення</Н1>

<Р>Відвідаєте ці сервери:

<Р><А HREF="http: //www. g las net.ru/~frolov/index.htiTil">Haшa домашня сторінка</А>

<P><A HREF="http://www. auramedia.ru">Каталог програм Auramedia</A>

<P><A HREF="http://www.microsoft.com/java/">Cтpaница сервера Microsoft про Java</A>

<P><A HREF="ColorLinks.html#локальный роздягнув">Локальний розділ</А>

<HR>

<H1><A NАМЕ="Локальний розділ">Локальний розділ</А></Н1>

<Р>Цей локальньй роздягнув ви можете переглянути, навіть якщо ваш комп'ютер не підключений до Internet

<SCRIPT LANGUAGE="JavaScript">

<!--

colorShift();

//-->

</SCRIPT>

</BODY>

</HTML>

 

Робота сценарію починається після завантаження документа з виклику функції colorShift. Цей виклик розташований наприкінці області тіла документа HTML.

Функція поступово зменшує значення червоного, зеленого і блакитного компонента кольору. Початкові значення цих компонентів зберігаються в глобальних змінних nRed, nGreen і nBlue:

 

var nRed =255;

var nGreen = 255;

var nBlue = 255;

 

Значення кольору тла формується в такий спосіб:

 

document.bgColor = "#" + dec2hex(nRed) + dec2hex(nGreen) + dec2hex (nBlue);

 

Тут за допомогою функції dec2hex перетворюється десяткове значення колірного компонента в шестнадцатеричное. Ця функція буде описана докладно пізніше в розділі "Шестнадцатеричный калькулятор" гл.3.

Далі після установки кольору фону перевіряється значення червоного колірного компонента, і, якщо воно більше нуля, зменшується і воно, і значення інших колірних компонентів на 10:

 

if(nRed > 0)

{

nRed -= 10;

nGreen -= 10;

nBlue -= 10;

}

 

Для того щоб функція colorShift викликалася періодично, використовується метод setTimeout викликом його наприкінці функції:

 

var cmd = "colorShift()";

timer = window.setTimeout(cmd, 50);

 

У результаті функція colorShift буде викликатися кожні 50 мс.

4.10. Індивідуальні завдання на лабораторну роботу №4

4.10.1. Індивідуальне завдання для кожного студента. На основі листингов 4.1-4.3 підготувати і налагодити код JavaScript, у якому передбачити реалізацію індивідуального завдання. Вибір варіанта завдання здійснюється з таблиці 2 на підставі номера залікової книжки студента. У завданні кожного студента – дванадцять задач (по числу рядків). Номер варіанта кожної конкретної задачі виходить як залишок від розподілу числа з двох останніх цифр номера залікової книжки на число варіантів конкретної задачі, збільшений на «1». Наприклад, для номера зачіткі «ХХХ21», третьої задачі «Перетворення типів», що має п'ять варіантів, обираний варіант буде дорівнює:

Вар.=(21%5)+1=1+1=2.

4.10.2. Загальне завдання для всіх студентів. За результатами лабораторної роботи підготувати протокол, що включає формулювання пунктів завдання, коротке опис реалізації кожного з пунктів завдання з фрагментами коду, висновки по кожному з пунктів завдання.

Таблиця 2

Завдання

Варіант 1

Варіант 2

Варіант 3

Варіант 4

Варіант 5

Варіант 6

Варіант 7

Базовий вихідний листинг

Листинг 4.1

Листинг 4.2

Листинг 4.3

Листинг 4.2

Листинг 4.1

Листинг 4.2

Листинг 4.3

Початкові кольори посилань (непосещ./акт./ посещ.)

Синій/ жовтий/ ліловий

Чорний/ зелений/ фіолетовий

Сірий/ червоний/ зелений

Зелений/ чорний/ червоний

Жовтий/ синій/ ліловий

Жовтогарячий/ синій/ чорний

Синій/ чорний/ жовтогарячий

Модифіц-ние кольору посилань (непосещ./акт./ посещ.)

Чорний/ зелений/ фіолетовий

Зелений/ чорний/ червоний

Жовтогарячий/ синій/ чорний

Синій/ жовтий/ ліловий

Сірий/ червоний/ зелений

Синій/ чорний/ жовтогарячий

Жовтий/ синій/ ліловий

Для об'єкта браузера Document використовувати властивість

anchors

forms

images

links

forms

images

links

Для об'єкта браузера Document використовувати методи

open , write, close

open, writeln, close

open , clear, close

open , clear, write

open , clear, writeln

open, writeln, close

open , clear, close

Для об'єкта браузера Document використовувати оброблювачі

onClick

onMouseOver

onClick

onMouseOver

onClick

onMouseOver

onClick

Використовувати властивості і методи класу Math

E, abs

PI, acos

LN2, asin

LN10, atan

LOG2E, ceil

LOG10E, cos

SQRT2, exp

Використовувати методи класу Date

getDate, setDate

getYear, setYear

getHours, setHours

getMinutes, setMinutes

getMonth, setMonth

getSeconds, setSeconds

getTime, setTime

Використовувати убудовані функції

eval

parseInt

parseFloat

escape

unescape

parseInt

parseFloat

Виконати плавний перехід кольору тла документа

З білого на голубой

З жовтого на рожевий

Із салатового на жовтогарячий

З блакитного на сірий

З жовтогарячого на жовтий

З зеленого на рожевий

З блакитного на сірий