- •1. Основні поняття
- •1.1. Сім варіацій на тему "Hello, world! "
- •1.1.1. Варіація перша: сама проста
- •1.1.2. Варіація друга: із секретним вихідним текстом
- •1.1.3. Варіація третя: із переменной і функціями
- •1.1.4. Варіація четверта: створення сторінки "на літу"
- •1.1.5. Варіація п'ята: із діалоговою панеллю
- •1.1.6. Варіація шоста: опрацювання події
- •1.1.7. Варіація сьома: із визначенням типу браузера
- •1.2. Перемінні в JavaScript
- •1.2.1. Оголошення перемінних
- •1.2.2. Присвоєння значення перемінним
- •1.2.3. Типи даних
- •1.2.4. Перетворення типів даних
- •1.3. Оператори мови JavaScript
- •1.3.1. Унарные оператори
- •1.3.2. Бинарные оператори
- •1.3.3. Оператори для роботи з окремими бітами
- •1.3.4. Оператори зсуву
- •1.3.5. Оператори відношення
- •1.3.6. Логічні оператори
- •1.3.7. Оператор присвоювання
- •1.3.8. Умовні оператори
- •1.3.9. Оператори циклу
- •1.3.10. Інші оператори
- •1.3.11. Старшинство операторів JavaScript
- •1.3.12. Функції в мові сценаріїв JavaScript
- •1.4. Приклади використання операторів циклу
- •2. Класи і об'єкти
- •2.1. Три типи об'єктів «JavaScript
- •2.1.1. Умонтовані об'єкти
- •2.1.2. Об'єкти браузера
- •2.1.3. Об'єкти на базі класів, утворюваних програмістом
- •2.2. Масиви в JavaScript
- •2.3.1. Властивості об'єкта window
- •2.3.2. Методи об'єкта window
- •2.4. Сценарії, що працюють з об'єктами window
- •2.4.1. Як закрити вікно браузера
- •2.4.2. Открываем нове окно
- •2.4.3. Текст , що біжить , у рядку стани браузера
- •2.4.4. Обмеження часу реакції користувача
- •2.4.5. Завантаження документа html у вікно браузера
- •2.5.1. Властивості об'єкта document
- •2.5.2. Методи об'єкта document
- •2.5.3. Колірне оформлення документа
- •2.5.4. Посилання і мітки в документі
- •2.6. Умонтований клас Math
- •2.6.1. Властивості
- •2.6.2. Методи
- •2.7. Умонтований клас Date
- •2.7.1. Конструктори класу Date
- •2.8. Умонтовані функції
- •2.9. Плавна зміна цвіту фона документа html
- •3. Робота з формами
- •3.1. Ієрархія об'єктів у формах
- •3.2. Форма і її властивості
- •3.2.2. Властивості об'єкта form
- •3.3. Об'єкти, що входять до складу форм
- •3.3.1. Кнопка button
- •3.3.2. Перемикач checkbox
- •3.3.3. Перемикач radio
- •3.3.4. Приклад форми з перемикачами
- •3.3.5. Список select
- •3.3.6. Приклади сценаріїв, що працюють із списками
- •3.3.7. Однострочное поле text
- •3.3.8. Перевірка анкети
- •3.3.9. Многострочное поле textarea
- •3.3.10. Приклад сценарію, що заповнює поле textarea
- •3.3.11. Однострочное поле password
- •3.3.12. Запровадження ідентифікатора і пароля
- •3.4. Перевірка заповнення форми
- •3.5. Шестнадцатеричный калькулятор
- •3.3.6. Електронні часи
- •4. Фреймы
- •4.1. Файл опису фреймов
- •4.2. Взаємодія між фреймами
- •4.2.1. Десятично-шестнадцатеричный перетворювач
- •4.2.2. Відображення декількох документів html
- •5. Растровые зображення
- •5.1. Растровое зображення як об'єкт
- •5.2. Динамічна заміна растровых зображень
- •5.2.1. Зміна зовнішнього вигляду графічних посилань
- •5.2.2. Створення анімаційних зображень
- •5.2.3. Чекання завантаження всіх зображень
- •6. Взаємодія з аплетами java
- •6.1. Вбудовування аплета Java у документ html
- •6.2. Виклик методів аплета Java із сценарію JavaScript
- •6.3. Доступ до полів аплета Java із сценарію JavaScript
- •6.4. Динамічне завантаження аплетов Java
- •7. Застосування cookie
- •7.1. Виконання основних операцій із cookie
- •7.1.1. Створення cookie
- •7.1.2. Одержання значення cookie
- •7.1.3. Зміна значення параметра cookie
- •7.1.4. Видалення cookie
- •7.1.5. Обмеження на використання cookie
- •7.2. Декілька прикладів використання cookie
- •7.2.1. Фіксація повторних провідин сторінки
- •7.2.2. Записна книжка Cookies Notepad
- •7.2.3. Настроювання параметрів документа html
- •7.2.5. Одержання cookie розширенням серверу Web
- •7.2.6. Лічильник провідин на базі cookie і програми cgi
- •7.3. Настроювання браузера для роботи з cookie
4.2. Взаємодія між фреймами
За допомогою сценаріїв JavaScript ви можете наділити фреймы можливостями, недосяжними з застосуванням одного лише тільки мови розмітки гипертекста HTML. Наприклад, один із фреймов може містити посилання на документи, що при активізації цих посилань завантажуються у вікно іншого фрейма. Сценарій JavaScript дозволить завантажувати в такий спосіб не один документ, а одночасно декілька документів у різні фреймы. Приклад організації такої взаємодії ми роздивимося трохи пізніше, а зараз на конкретному прикладі розповімо про те, як можна передавати дані між об'єктами форм, розташованих у різних фреймах.
4.2.1. Десятично-шестнадцатеричный перетворювач
Десятично-шестнадцатеричный перетворювач виконаний на базі документів HTML із фреймами і сценарієм JavaScript.
Верхній фрейм використовується для розміщення заголовка. Клавіатура перетворювача, призначена для запровадження десяткових чисел і запуску процесу перетворення. знаходиться в лівому фрейме. Правий фрейм використовується для відображення вихідного десяткового числа в результат перетворення.
Можна уводити вихідне число не тільки за допомогою клавіатури, але і безпосередньо в поле Dec, розташоване в правому фрейме. Поле Hex заблокировано для запровадження за допомогою оброблювача події onFocus Аналогічний прийом використаний у шестнадцатеричном калькуляторі, вихідні тексти якого були приведені в попередній главі.
Вихідний текст файла опису фреймов поданий у листинге 4.1.
Листинг 4.1. Файл chapter4/Converter/index. htm
<HTML>
<HEAD>
<ТIТLЕ>Десятично-шестнадцатеричный перетворювач</ТIТLЕ>
</HEAD>
<FRAMESET ROWS="85,*" FRAMEBORDER=1>
<FRAME SCROLLING="no" NAME="title" SRC="title.html" MARGINHEIGHT="1">
<FRAMESET COLS="180,*" FRAMEBORDER=1>
<FRAME SCROLLING="auto" NAME="toc" SRC="toc.html">
<FRAME SCROLLING="auto" NAME="mainpage" SRC="main.html">
</FRAMESET>
<NOFRAME>
<BODY BGCOLOR="#FFFFFF"> </BODY>
</NOFRAME>
</FRAMESET>
</HTML>
Сценарій будет працювати з фреймами toc і mainpage, розташованими відповідно у файлах з іменами toc. html і main. html. У файлі title. html розташовується заголовок (листинг 4.2).
Листинг 4.2. Файл chapter4/Converter/title. html
<HTML>
<HEAD>
<ПОЗНАЧКА HTTP-EQUIV="Content-Type" CONTENT="text/html ;
charset=windows-1251">
</HEAD>
<BODY BGCOLOR="#ffffff">
<TABLE>
<TR> <TD> <Н2>Десятично-шестнадцатеричный перетворювач</H2> </TD>
</TR>
</TABLE>
</BODY>
</HTML>
Вихідний текст документа, що містить форму з полями Dec і Hex, поданий у листинге 4.3.
Листинг 4.3. Файл chapter4/Converter/main. html
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;
charset=windows-1251">
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<FORM NAME="Sel">
<TABLE>
<TR>
<TD><B>Hex : </B></TD>
<TD><INPUT TYPE="text" NAME="hexValue" SIZE="20" onFocus=" this. blur();"></td>
</TR>
<TR>
<TD><B>Dec:</B></TD>
<TD><INPUT TYPE="text" NAME="decValue" SIZE="20"></TD>
</TR>
</FORM>
</BODY>
</HTML>
Для поля вихідного десяткового числа за допомогою параметра NAME задане ім'я decValue. Поле результату називається hexValue. Ці імена використовуються сценарієм JavaScript для адресации поляж.
Документ toc. html (листинг 4.4) містить форму з кнопками і сценарій JavaScript.
Листинг 4.4. Файл chapter4/Converter/toc. html
<HTML>
<BODY BGCOLOR="#BOFFD8">
<SCRIPT LANGUAGE="JavaScript">
<!--
var bNewNumber = true;
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);
nTmp = Math.floor(nTmp);
}
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);
e1se
return szResult;
}
function putNumber(bin, form)
{
var szOld = "";
var szNew = "";
if(bNewNumber)
{
parent.mainpage.document.forms[0].hexValue.value = "";
parent.mainpage.document.forms[0].decValue.value = "";
bNewNumber = false;
}
szOld = parent.mainpage.document.forms[0].decValue.value;
szNew = szOld.concat(btn.name);
nCurrent = eval(szNew);
parent.mainpage.document.forms[0].decValue.value = nCurrent;
}
function clearAll(form)
{
total = 0;
lastOperation = "+";
parent.mainpage.document.forms[0].hexValue.value = "0";
parent.mainpage.document.forms[0].decValue.value = "0";
bNewNumber = true;
}
function getResult(form)
{
parent. mainpage. document. forms[0]. hexValue. value = dec2hex(parent. mainpage. document. forms[0]. decValue. value);
bNewNumber = true;
}
//-->
</SCRIPT>
<FORM>
<TABLE BORDER=2 BORDERCOLOR="Black" BGCOLOR="Yellow">
<TR>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="5" VALUE=" 5 " onClick="putNumber(this, this.form);"></TD>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="6" VALUE=" б " onClick="putNumber(this, this.form);"></TD>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="7" VALUE=" 7 " onClick="putNumber (this, this.form);"></TD>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="8" VALUE=" 8 " onClick="putNunber (this, this.form);"></TD>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="9" VALUE=" 9 " onClick="putNumber (this, this.form);"></TD> </TR> <TR>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="0" VALUE=" 0 " onClick="putNumber(this,this.form);"></TD>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="1" VALUE=" 1 " onClick="putNumber (this, this.form);"></TD>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="2" VALUE=" 2 " onClick="putNumber (this, this. form);"></TD>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="3" VALUE=" 3 " onClick="putNumber (this, this.form);"></TD>
<TD ALIGN=CENTER><NPUT TYPE="button" NAME="4" VALUE=" 4 " onClick="putNumber (this, this.form);"></TD>
</TR>
<TR>
<TD ALIGN=CENTER><INPUT TYPE="button" NAME="C" VALUE=" С "
onClick="clearAll (this. form);"></TD>
<TD COLSPAN=4 ALIGN=CENTER><INPUT TYPE="button" NAME="=" VALUE=" to Hex " onClick="getResult (this.form);"></TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
Сценарії десятично-шестнадцатеричного перетворювача працює аналогічно сценарію шестнадцатеричного калькулятора (за винятком, звичайно, того, що перетворювач не виконує ніяких арифметичних дій). Головна відмінність полягає в тому, що тепер поля для запровадження і відображення чисел розташовуються в іншому документі HTML. завантаженому в окремий фрейм.
Для того щоб проинициализировать поля hexValue і decValue, ми посилаємося на форму, розташовану усередині фрейма mainpage:
parent. mainpage. document. forms[0]. hexValue. value = "";
parent. mainpage. document. forms[0]. decValue. value = "";
Тут parent посилається на об'єкт, що є батьківським стосовно документа HTML, що містить сценарії. У даному випадку це вікно, що містить усі наші фреймы.
Для читання вмісту поля decValue застосовується аналогічна техніка:
szOld = parent. mainpage. document. forms[0]. decValue. value;
Функція getResult, що виконує десятично-шестнадцатеричное перетворення, одержує вихідне число з нуля dccValue і передасть його функції dec2hex . Результат перетворення, виконаного цією функцією, записується потім у поле hexValue:
function getResult(form)
{
parent.mainpage.document.forms[0].hexValue.value = dec2hex(parent.mainpage.document.forms[0].decValue.value);
bNewNumber = true;
}
