Professional Documents
Culture Documents
Java Script
Java Script
Навчальний посібник
з дисципліни
"Веб-технології і веб-дизайн"
Одеса-2015
Зміст
2
Основи JavaScript
person.name = "Petrov";
3
Існує ряд зумовлених об'єктів. Можна створити новий об'єкт, що наслідує
властивості вже існуючого об'єкту таким чином (на прикладі об'єкту Date):
Перетворення типів
s = 5;
var i;
var x = 10, y = 20;
var str = 'Hello world';
4
Включення скриптів JavaScript в HTML-документ
<html>
<head>
<script type="text/javascript">
document.write("Hello,world!");
</script>
</head>
</html>
<script src="script.js"></script>
<script src="/js/script1.js"></script>
<script src="/js/script2.js"></script>
Виведення даних
Метод alert()
Метод write()
<script type="text/javascript">
document.write('Приклад виведення повідомлення у вікно браузеру');
</script>
<script type="text/javascript">
document.write('<H1><I>Привіт</I></H1>');
</script>
<script type="text/javascript">
document.write('<H1><I>Приклад виведення ' +
' повідомлення у вікно браузеру</I></H1>');
</script>
<script type="text/javascript">
document.write('Рядок 1');
document.write('Рядок 2');
</script>
<script type="text/javascript">
document.write('Рядок 1<BR>');
document.write('Рядок 2<BR>');
</script>
Введення даних
Метод confirm()
<script type="text/javascript">
if (confirm('Перейти по гіперпосиланню?'))
document.write('Перехід по гіперпосиланню')
else
document.write('Відміна переходу по гіперпосиланню');
</script>
8
Рисунок 6 - Введення інформації методом confirm()
Метод prompt ()
9
умовчанням. Другий параметр може бути і порожнім рядком "". Наведемо
приклад.
<script type="text/javascript">
var x;
x=prompt('Введіть значення змінної x', '');
document.write(x);
</script>
Коментарі
Арифметичні оператори
Оператори присвоєння
Оператори порівняння
Логічні оператори
Оператор if
if (умова)
{код, який виконується, якщо умова виконана}
else
{код, який виконується, якщо умова не виконана}
if (умова)
{код, який виконується, якщо умова виконана}
Оператор switch
switch (вираження){
case вар1: виконання оператора 1, якщо вираження рівне вар1
[break]
case вар2: виконання оператора 2, якщо вираження рівне вар2
[break]
. . .
12
[default: виконання оператора n, якщо вираження не відповідає
жодному з варіантів]
}
<script type="text/javascript">
var x=2;
switch (x) {
case 1: alert(1);
case 2: alert(2);
case 3: alert(3);
}
</script>
<script type="text/javascript">
var x = 2;
switch (x) {
case 1: alert(l);
break;
case 2: alert(2);
break;
case 3: alert(3);
break;
}
</script>
13
В даному прикладі спрацює тільки 2-й варіант.
Оператори циклу
Оператор for
<script type="text/javascript">
var i;
var n=1;
for (i=1; i<=10; i++){
n=n*i;
document.write(i+'!'+'='+n+'<br>');
}
document.write('<br><br>10!=',n);
</script>
14
Рисунок 10 - Виведення значень n!
Цикл з передумовою
<script type="text/javascript">
var y;
var x=1;
document.write('Обчислити значення функції У(х) =x*x на відрізку
[1;5] з кроком h=0.5','<br>');
while (x<=5){
y=x*x;
document.write('<b>Y(',x,') = </b>',y,'<br>');
x=x+0.5
}
</script>
Цикл з постумовою
do {
<тіло циклу>
}
while (логічний вираз);
<script type="text/javascript">
var y;
var x=1;
document.write('Обчислити значення функції У(х) =x*x на відрізку
[1;5] з кроком h=0.5','<br>');
do{
y=x*x;
document.write('<b>Y(',x,')=</b>',y'<br>');
x=x+0.5
}
while (x<=5);
</script>
16
Функції
<html>
<head>
<script type="text/javascript">
function Greeting(s){
alert("Hello, " + s);
}
</script>
</head>
<body>
<script type="text/javascript">
Greeting ("world");
</script>
</body>
</html>
<script type="text/javascript">
function Srect(width,height) {
var S = width * height;
return S}
alert(Srect(4,7));
</script>
17
Вбудовані функції
<script type="text/javascript">
var x='25 метрів';
y=parseInt(x);
alert(y);
</script>
<script type="text/javascript">
var x=prompt("Введіть число x", "");
var y=prompt("Введіть число y", "");
x=parseFloat(x);
y=parseFloat(y);
if (y>x)
alert ("max="+y)
else
alert ("max="+x);
</script>
<script type="text/javascript">
var у = 7;
var x = "if (у<10) у=у+12";
alert(eval(x));
</script>
18
Вбудовані об'єкти
Об'єкт String
19
За допомогою об'єкту String можна створити рядок як строковий об'єкт.
Проте в переважній більшості випадків для цього досить використати звичайну
змінну і оператор присвоєння строкового значення. В цьому випадку
інтерпретатор все одно створює екземпляр строкового об'єкту, властивості і
методи якого доступні з програмного коду.
Об'єднання рядків
20
<script type="text/javascript">
var a, b, c;
a="Браузер - програма";
b="для перегляду Web- сторінок";
c=a+" "+b;
alert (c);
</script>
<script type="text/javascript">
var c="Браузер - програма для перегляду Web - сторінок";
alert(c.length);
</script>
<script type="text/javascript">
var c="Браузер - програма для перегляду Web - сторінок";
alert (c.toUpperCase());
</script>
<script type="text/javascript">
var c="Браузер - програма для перегляду Web- сторінок";
alert (c.charAt(5));
</script>
21
Метод concat(рядок) - конкатенація рядків.
Синтаксис: рядок1.concat(рядок2)
Повертає рядок.
Цей метод діє так само, як і оператор + складання для рядків: до рядка
рядок1 приписується справа рядок2.
<script type="text/javascript">
var x;
x="Браузер - програма ";
alert (x.concat("для перегляду Web- сторінок"));
</script>
<script type="text/javascript">
var c="Браузер - програма для перегляду Web- сторінок";
alert (c.charCodeAt(2));
</script>
<script type="text/javascript">
var c="Браузер - програма для перегляду Web- сторінок";
alert (c.indexOf("Web"));
</script>
<script type="text/javascript">
var c="Браузер - програма для перегляду Web - сторінок";
alert (c.substring(10,19));
</script>
<script type="text/javascript">
var c="Браузер - програма для перегляду Web - сторінок";
alert (c.slice(10, - 8));
</script>
<script type="text/javascript">
var c="Браузер - програма для перегляду Web - сторінок";
23
alert (c.substr(20,13));
</script>
<script type="text/javascript">
var c="Браузер - програма для перегляду Web - сторінок";
alert (c.split("а"));
</script>
Об'єкт Array
Створення масиву
24
var earth = new Array(4); // масив з 4-х елементів
earth[0] = "Планета";
earth[l] = "24 години";
earth[2] = 6378;
earth[3] = 365.25;
Властивість length
<script type="text/javascript">
function aSum(xarray){
var s=0;
for (var i=0; i<=xarray.length-1;i++){
s=s+xarray[i]
}
return s
}
25
var myarray = new Array(2, 3, 4);
var sum = aSum(myarray);
alert ("Сума = "+sum);
</script>
26
Метод slice(індекс1[,індекс2]) створює масив з елементів
початкового масиву з індексами вказаного діапазону.
Синтаксис: ім’я_масиву.slice(індекс1[,індекс2])
Повертає масив. Цей метод не змінює початковий масив.
Другий параметр (кінцевий індекс) не є обов'язковим, про що свідчать
квадратні дужки в описі синтаксису. Якщо він не вказаний, то створюваний
масив містить елементи початкового масиву, починаючи з індексу індекс1 і до
кінця. Інакше створюваний масив містить елементи початкового масиву
починаючи з індексу індекс1 і до індексу індекс2, за винятком останнього.
При цьому початковий масив залишається без змін.
<0 у слідує за х
0 порядок слідування х і у не змінюється
>0 х слідує за у
<script type="text/javascript">
var myarray = new Array(25, 8, 7, 41);
27
function comp (x, y){return x - y}
myarray.sort(comp);
alert(myarray);
</script>
function sum(aN){
var s=aN[0]
for(var i = 1; i<=aN.length-1;i++){
s += aN[i]
28
}
return s
}
function Nmin(aN){
var min=aN[0]
for(var i = 1; i<= aN.length-1; i++){
if (aN[i]<min)
min = aN[i]
}
return min
}
Об'єкт Math
F - постійна Ейлера;
LN10 - значення натурального логарифма числа 10;
LN2 - значення натурального логарифма числа 2;
LOG10E - значення десяткового логарифма експоненти;
LOG2E - значення двійкового логарифма експоненти;
PI - значення ;
SQRT1 2 - значення квадратного кореня з 1/2;
SQRT2 - значення квадратного кореня з 2.
29
Методи об'єкту Math
Приклади
х = Nmax*Math.random();
Math.sin(Math.PI*x/180);
30
Об'єкт Date
31
Для виведення поточної дати використовується об'єкт Date і метод
write() об'єкту document :
<script type="text/javascript">
var current_date = new Date();
document.write("<p><i>Поточна дата:</i>" + current_date + ".<p>");
</script>
<script type="text/javascript">
var current_date = new Date();
document.write("<i>Дата:</i>"+current_date.getDate()+ "." +
(current_date.getMonth()+1) + "." + current_date.getYear() + ".");
</script>
<script type="text/javascript">
var current_date = new Date();
32
document.write("<i>Час:</i> " + current_date.getHours()+ "." +
current_date.getMinutes()+ "." + current_date.getSeconds() + ".");
</script>
<html>
<head>
<script type="text/javascript">
function fDateTime(){
return new Date()
}
</script>
</head>
<body>
<script>
alert(fDateTime());
</script>
</body>
</html>
<html>
<head>
<script type="text/javascript">
function fTime (){
var n=new Date();
var s=n.getHours();
var minut=n.getMinutes();
var sec=n.getSeconds();
var tSt=""+((s>12)?s-12:s);
tSt+=((minut<10)?":0":":")+minut;
tSt+=((sec<10)?":0":":")+sec;
tSt+=(s>=12)?"PM":"AM";
return tSt
}
</script>
</head>
<body>
<script>
alert(fTime());
</script>
</body>
</html>
<script type="text/javascript">
function fTime(){
var n=new Date();
var s=n.getHours();
var minut=n.getMinutes();
var sec=n.getSeconds();
var tSt=""+s;
tSt+=((minut<10)?":0":":")+minut;
34
tSt+=((sec<10)?":0":":")+sec;
return tSt
}
alert(fTime())
</script>
<form>
<input type="button" value="Виконати" onClick="alert('Виконується
сценарій JavaScript')">
</form>
35
Рисунок 20 - Результат виконання сценарію
Для одного і того ж елементу можна визначити декілька подій, на які він
реагуватиме. Отже, значенням атрибуту-події, як вже відзначалося, являється
код сценарію, поміщений в лапки. Цей сценарій називають також обробником
події. Якщо обробник події містить декілька виразів, то вони розділяються
крапкою з комою.
Зазвичай обробники подій оформляються у вигляді функцій, визначення
яких поміщають в контейнерний тег <script>.
Як приклад нижче приведений варіант оформлення обробника клацання
на зображенні. Зображення в HTML-документі визначається, як відомо, тегом
<img>. Файл із зображенням задається атрибутом src. Обробник події onClick
задається в прикладі як функція clickimage(), яка має бути визначена у
контейнері <script>. В результаті клацання на графічному зображенні
виводиться вікно з повідомленням.
<html>
<script type="text/javascript">
function clickimage(){
alert("Виконується сценарій JavaScript!")
}
</script>
<body>
<img src = "pict.jpg" onClick = "clickimage()">
</body>
</html>
36
Таблиця 2 - Події JavaScript
Обробник HTML-елементи Опис Метод
події імітації
Втрата поточним елементом
A, AREA, фокусу, тобто перехід до
BUTTON, INPUT, іншого елементу. Виникає при
onBlur blur()
LABEL, SELECT, клацанні мишею поза
TEXTAREA елементом або натисненні
клавіші табуляції.
Зміна значень елементів форми.
INPUT, SELECT, Виникає після втрати
onChange change()
TEXTAREA елементом фокусу, тобто після
події blur.
Практично усі Одинарне клацання (натиснута і
onClick click()
HTML-елементи відпущена кнопка миші).
Практично усі Подвійне клацання.
onDblClick
HTML-елементи
A, AREA, Отримання елементом фокусу
BUTTON, INPUT, (клацання мишею на елементі
onFocus focus()
LABEL, SELECT, або чергове натиснення клавіші
TEXTAREA табуляції).
Практично усі Натиснута клавіша на
onKeyDown
HTML-елементи клавіатурі.
Практично усі Натиснута і відпущена клавіша
onKeyPress
HTML-елементи на клавіатурі.
Практично усі Відпущена клавіша на
onKeyUp
HTML-елементи клавіатурі.
BODY, Закінчено завантаження
onLoad
FRAMESET документу.
Практично усі Натиснута кнопка миші в межах
onMouseDown
HTML-елементи поточного елементу.
Практично усі Переміщення курсора миші в
onMouseMove
HTML-елементи межах поточного елементу.
Практично усі Курсор миші, виведений за
onMouseOut
HTML-елементи межі поточного елементу.
Практично усі Курсор миші, наведений на
onMouseOver
HTML-елементи поточний елемент.
Практично усі Відпущена кнопка миші в
onMouseUp
HTML-елементи межах поточного елементу.
onReset FORM Скидання даних форми reset()
onResize WINDOW Зміна розмірів вікна.
INPUT, Виділення тексту в поточному
onSelect
TEXTAREA елементі.
onSubmit FORM Відправка даних форми submit()
37
Об'єктна модель документу (DOM)
document.колекція.id_об’єкту
document.колекція["id_об'єкту"]
document.колекція[індекс_об'єкту]
38
звертатися за значенням атрибуту name (ім'я форми), якщо він вказаний в тегу
<form>:
document.ім’я_форми
Колекція all
<html>
<head>
<title>html - документ</title>
<script type="text/javascript">
function sall()
{var msg = "";
for(var i = 0; i < document.all.length; i++){
msg += i + " " + document.all[i].tagName + "\n"}
alert(msg)}
</script>
</head>
<body>
<p align="center"> HTML - документ
<table border='1' width='75%'>
<tr>
<td width='50%'> Осередок1</td>
<td width='50%'> Осередок2</td></tr>
</table>
<ul>
<li>Рядок 1
<li>Рядок 2
<li>Рядок 3
</ul>
<form>
<p align="center">
<input type="button" value="Представити інформацію" name="b1"
onClick="sall()">
</form>
</body>
</html>
39
Рисунок 21 - Виведення вмісту колекції all для цього документу
Форми
<html>
<head>
<title>Приклад форми</title>
</head>
<body>
<p align="center"><font size=6> Приклад форми </font>
<form name="m_form" action="form01.htm" method="POST">
<b> Будь ласка, вкажіть ім'я і прізвище </b>
<br>
<input type="text" name="m" size="30" value=""><br>
<input type="text" name="n" size="30" value=""><br>
Ч<input type="radio" name="g">
Ж<input type="radio" name="g">
<br>
<input type="submit" name="Send" value=" Введення ">
<input type="reset" name="Clear" value="Відмінити">
</form>
40
</p>
</body>
</html>
<script type="text/javascript">
function doClick (){
alert ("Кнопка натиснута");
}
</script>
41
Об'єкт form
<script type="text/javascript">
function doClick(){
var s="name="+document.forms[0].name+"\n"+
"action="+document.forms[0].action+"\n"+
"method="+document.forms[0].method+"\n";
alert(s)}
</script>
42
Упізнати кількість форм в цьому документі ми можемо за допомогою
властивості length:
function doClick(){
var s="Кількість форм в документі: "+document.forms.length;
alert(s)}
function doClick(){
var s="Кількість елементів у формі: "+document.forms[0].length;
alert (s)
}
<html>
<head>
<title>Приклад форми</title>
<script type="text/javascript">
function doClear(){
if(confirm('Очистити поля форми?'))
document.user.reset()
}
function doSend(){
var s=document.user.e.value;
var v=s.indexOf("@",1);
if(document.user.f.value==""){
alert('Ви повинні заповнити поле ПІБ');
document.user.f.focus()
} else
if(document.user.a.value==""){
alert('Ви повинні заповнити поле адреси');
44
document.user.a.focus()
} else
if(document.user.e.value==""){
alert('Ви повинні заповнити поле e-mail');
document.user.e.focus()
} else
if(v==-1){
alert('Адресу e-mail вказано невірно');
document.user.e.select();
document.user.e.focus()
}
else
document.user.submit()
}
</script>
</head>
<body>
<p align="center"><font size=6> Дані про користувача</font>
<form name="user" action="page.php" method="POST">
<b> Будь ласка, вкажіть дані про себе:</b>
<br><br>
ПІБ <input type="text" name="f" size="30"><br>
Адреса <input type="text" name="a" size="35"><br>
e-mail <input type="text" name="e" size="30"><br>
<input type="button" value="Послати" onClick="doSend()">
<input type="button" value=" Відмінити" onClick="doClear()">
</form>
</p>
</body>
</html>
Об'єкт window
window.властивість
window.метод([параметри])
45
У об'єкту window є синонім self, який використовується при зверненні
до вікна, що містить поточний документ. Інакше кажучи, ідентифікатор self
застосовується у багатовіконних системах, коли вимагається вказати вікно з
документом, в якому знаходиться цей сценарій. Його рекомендується
вставляти, щоб не заплутатися. При запуску сценарію в посиланнях на об'єкти
тільки поточного документу ідентифікатори window і self можна опускати.
У об'єкту window є ряд підоб'єктів. Об'єкт location містить інформацію,
корисну для роботи в мережі. Окрім цього, властивість href об'єкту location
використовується для завантаження документу в поточне вікно:
Закриття вікон
<html>
<head>
<title>Створення вікна</title>
<script type="text/javascript">
function win (){
var NewWin=open('', 'NewWin', 'width=200, height=200, status=yes,
toolbar=yes, menubar=yes')
}
function win1(){
NewWin.close()
}
47
</script>
</head>
<body>
<h1>Створення нового вікна</h1>
<hr>
Для відкриття і закриття вікна використайте ці кнопки
<hr>
<form name="winform">
<input type="button" value="Відкрити нове вікно" onClick="win()">
<p>
<input type="button" value="Закрити нове вікно" onClick="win1()">
</form>
<hr>
</body>
</html>
Часові затримки
48
<script type="text/javascript">
var z=window.setTimeout("alert ('Ваш час витік')", 5000);
</script>
<html>
<head>
<script type="text/javascript">
var msg = "Помістіть на це місце своє повідомлення ... "
function scrollMsg(){
document.scrollerForm.welcomeMsg.value = msg;
msg = msg.substring(1, msg.length) + msg.substring(0, 1);
setTimeout("scrollMsg()", 150)
}
</script>
</head>
<body onLoad="scrollMsg()">
<form name="scrollerForm">
<input type="text" name="welcomeMsg" value="" size=40>
</form>
</body>
</html>
<html>
<head>
<title>Тимчасові затримки</title>
<script type="text/javascript">
function wz(){
window.alert('Прошло 5 секунд')
}
function demo(){
//викликати функцію wz кожні 5 секунд
window.setInterval('wz()', 5000)
}
demo()
</script>
</head>
<body>
</body>
</html>
49
В результаті виконання скрипта через кожні 5 секунд видається
повідомлення (рис.28).
Текстовий годинник
<html>
<head>
<title>Годинник</title>
<script type="text/javascript">
function ftime(){
var time=new Date();
var h=time.getHours();
var minute=time.getMinutes();
var sec=time.getSeconds();
var temp=h;
temp+= ((minute<10)?":0":":") +minute;
temp+= ((sec<10)?":0":":") +sec;
document.forms[0].clock.value=temp;
setTimeout ("ftime()",1000)
}
</script>
</head>
<body onLoad="ftime()">
<div align="center">
<font size=5><b>Поточний час</b></font>
<form name="d">
<input type="button" name="clock" value="">
</form>
</div>
</body>
</html>
50
Результат роботи скрипта приведений на рис.29.
Таймер
<html>
<head>
<title>Таймер</title>
</head>
<body>
<form name="f">
<div align="center">Ви знаходитеся на цій сторінці вже<br>
<input type="text" name="timer" size=" 16"><br>секунд (ы)
</div>
</form>
<script type="text/javascript">
var ms=0;
var sc=0;
document.f.timer.value='0';
function up()
{
if (ms>=9)
{ms=0;
sc+=1;
51
}
else
{
ms+=1
}
document.f.timer.value=sc+'.'+ms;
setTimeout("up()",100);
}
up()
</script>
</body>
</html>
Об'єкт document
<html>
<head>
<title> Виведення дати</title>
</head>
<body>
<div align="center">
<h2>Остання модифікація документу:</h2>
<script type="text/javascript">
document.write(document.lastModified)
</script>
</div>
</body>
</html>
<html>
<head>
<title>bgcolor</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<table border='0' align='center'>
<tr><td><form>
<input type=button value="ЧЕРВОНИЙ"
onClick="document.bgColor='#ff0000'">
<input type=button value="ЖОВТИЙ"
onClick="document.bgColor='#ffff00'">
<input type=button value="СИНІЙ"
onClick="document.bgColor='#0000ff'">
<input type=button value="БЛАКИТНИЙ"
onClick="document.bgColor='#87ceeb'">
<input type=button value="КОРАЛОВИЙ"
onClick="document.bgColor='#ff7f50'">
</form></td>
</table>
</body>
</html>
53