SlideShare a Scribd company logo
Події миші
• mousedown
– натискання кнопки миші над елементом.
• mouseup
– відпускання кнопки миші над елементом.
• mouseover
– мишка з’явилась над елементом.
• mouseout
– мишка пішла з елемента.
• mousemove
– рух мишки над елементом.
• click
– клік миші (= mousedown + mouseup).
• contextmenu
– клік правою кнопкою миші на елементі.
• dblclick
– подвійний клік миші.
Крім призначених обробників,
перераховані події миші мають дії
браузера по замовчуванню.
Наприклад, подвійний клік на слові
виділяє слово, права клавіша викликає
контекстне меню.
Відмінити дію по замовчуванню можна
за таким зразком:
<div oncontextmenu="return
false">Якийсь контент</div>
Координати миші
Розрізніються координати відносно вікна (clientX/clientY) і відносно
документа (pageX/pageY).
Приклад 1:
<div onmousemove="showCoords(event)"> // можна начепити і на body
Рухайте мишкою десь тут<br>
Рухайте мишкою десь тут<br>
Рухайте мишкою десь тут<br>
</div>
<p id="demo"></p>
<script>
function showCoords(event) {
var x = event.clientX;
var y = event.clientY;
var coords = "X coords: " + x + ", Y coords: " + y;
document.getElementById("demo").innerHTML = coords;
}
</script>
Задача 69
Завантажте і розпакуйте файл
goo.gl/VGb1M4. Змініть html-документ так,
щоб при переміщенні мишки правіше від
зображення, картинка змінювалась на
eyes_right.png.
Розв’язок
<body onmousemove="myFunction(event)">
<div style="width: 600px; height: 600px">
<!-- Горизонтальне положення картинки: 400 px -->
<img src="images/eyes_left.png" id="eyes"
style="position:absolute;left:400px;top:300px">
</div>
<script>
function myFunction(event) {
if (event.clientX > 400 + 32) {
eyes.src="images/eyes_right.png";
} else {
eyes.src="images/eyes_left.png";
}
}
</script>
</body>
setTimeout і setInterval
Ці методи дозволяють запускати функції через
задану кількість мілісекунд.
Синтаксис:
setTimeout(function, milliseconds[,
param1, param2, ...])
setInterval(function, milliseconds[,
param1, param2, ...])
Повертають ID таймера setTimeout чи
setInterval (можна використати для їх
зупинки через clearTimeout() чи
clearInterval() ).
setTimeout запускає функцію через
вказане число мілісекунд (один раз).
setInterval запускає періодично
функцію через вказане число мілісекунд.
param1, param2, ... – аргументи, які
можна передати функції (при потребі).
В якості функції може бути і анонімна
функція:
setTimeout(function() { alert('Тік-так') }, 1000);
Приклад 1.
<body>
<p>Клацніть на кнопку, щоб відкрити нове вікно, яке
автоматично закриється через 3 секунди</p>
<button onclick="openWin()">Відкрити
"myWindow"</button>
<script>
function openWin() {
var myWindow = window.open("", "myWindow",
"width=200, height=100");
myWindow.document.write("<p>Це вікно
'myWindow'</p>");
setTimeout(function(){ myWindow.close() },
3000);
}
</script>
</body>
Приклад 2.
<p>Наш час:</p>
<p id="demo"></p>
<script>
var myVar = setInterval(myTimer, 1000);
function myTimer() {
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("demo").innerHTML = t;
}
</script>
setTimeout і setInterval повертають
ідентифікатори таймера timerId, які можна
використати для скасування дій.
Синтаксис:
var timerId = setTimeout(...);
clearTimeout(timerId);
Приклад 3 (clearTimeout).
<p>Клацніть на "кнопка 1" і через 3 сек буде alert</p>
<p>Але якщо встигнете клацнути на "кнопка 2", то нічого
не буде</p>
<button onclick="myFunction()">кнопка 1</button>
<button onclick="myStopFunction()">кнопка 2</button>
<script>
var myVar;
function myFunction() {
myVar = setTimeout(function(){ alert("Hello")
}, 3000);
}
function myStopFunction() {
clearTimeout(myVar);
}
</script>
Задача 70
Завантажте зображення: goo.gl/4gUP6s
Створіть html-документ з зображенням
dice6.png і кнопками Start і Stop.
Напишіть код, який при натисканні на
Start випадковим чином змінюватиме
зображення з інтервалом 1 сек. Кнопка
Stop повинна зупиняти зміну.
Розв’язок
<img src="images/dice6.png" id=diceImage>
<button onclick="startMove()">Start</button>
<button onclick="stopMove()">Stop</button>
<script>
var timerID;
function startMove() {
timerID = setInterval(changeImage, 1000);
}
function stopMove() {
clearTimeout(timerID);
}
function changeImage() {
var rnd=Math.floor(Math.random()*6) + 1;
diceImage.src="images/dice"+rnd+".png";
}
</script>
Задача 70.1
Змініть код з попередньої задачі так, щоб
інтервал між змінами зображень щоразу
збільшувався на 20%, починаючи від 50 ms.
Зміна повинна припинитись, коли інтервал
досягає значення 1000 ms.
Розв’язок
<script>
var timerID;
var interval = 50;
function startMove() {
timerID = setTimeout(changeImage, interval);
}
function stopMove() {
clearTimeout(timerID);
}
function changeImage() {
var rnd=Math.floor(Math.random()*6) + 1;
diceImage.src="images/dice"+rnd+".png";
interval *= 1.2;
if (interval > 1000) {
clearTimeout(timerID);
interval = 50;
} else {
startMove();
}
}
</script>
Задача 70.2
Домашнє завдання:
1. Змініть код з попередньої задачі так,
щоб старт і стоп спрацьовували при
натисканні на ту саму кнопку.
2. Змініть функцію зміни зображення так,
щоб зміна гарантовано відбувалась на
іншу картинку.

More Related Content

More from Олег Вілігурський

JavaScript. Lectures. part 1. basis
JavaScript. Lectures. part 1. basisJavaScript. Lectures. part 1. basis
JavaScript. Lectures. part 1. basis
Олег Вілігурський
 
Python для фізиків. Вступ. Лабораторні роботи
Python для фізиків. Вступ. Лабораторні роботиPython для фізиків. Вступ. Лабораторні роботи
Python для фізиків. Вступ. Лабораторні роботи
Олег Вілігурський
 
Python для фізиків. Вступ. Лабораторні роботи.
Python для фізиків. Вступ. Лабораторні роботи.Python для фізиків. Вступ. Лабораторні роботи.
Python для фізиків. Вступ. Лабораторні роботи.
Олег Вілігурський
 
Python for physicists. introduction
Python for physicists. introductionPython for physicists. introduction
Python for physicists. introduction
Олег Вілігурський
 
Theme23-oop2(end)
Theme23-oop2(end)Theme23-oop2(end)
Theme23-oop2
Theme23-oop2Theme23-oop2
Theme22-OOP
Theme22-OOPTheme22-OOP
Theme20_ajax
Theme20_ajaxTheme20_ajax
Theme19_css
Theme19_cssTheme19_css
Theme18_css
Theme18_cssTheme18_css
Theme17a css
Theme17a cssTheme17a css
Coding for Future in Lutsk. JavaScript. Part 13
 Coding for Future in Lutsk. JavaScript. Part 13 Coding for Future in Lutsk. JavaScript. Part 13
Coding for Future in Lutsk. JavaScript. Part 13
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 9
Coding for Future in Lutsk. JavaScript. Part 9Coding for Future in Lutsk. JavaScript. Part 9
Coding for Future in Lutsk. JavaScript. Part 9
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 8
Coding for Future in Lutsk. JavaScript. Part 8Coding for Future in Lutsk. JavaScript. Part 8
Coding for Future in Lutsk. JavaScript. Part 8
Олег Вілігурський
 

More from Олег Вілігурський (20)

JavaScript. Lectures. part 1. basis
JavaScript. Lectures. part 1. basisJavaScript. Lectures. part 1. basis
JavaScript. Lectures. part 1. basis
 
Python для фізиків. Вступ. Лабораторні роботи
Python для фізиків. Вступ. Лабораторні роботиPython для фізиків. Вступ. Лабораторні роботи
Python для фізиків. Вступ. Лабораторні роботи
 
Python для фізиків. Вступ. Лабораторні роботи.
Python для фізиків. Вступ. Лабораторні роботи.Python для фізиків. Вступ. Лабораторні роботи.
Python для фізиків. Вступ. Лабораторні роботи.
 
Python for physicists. introduction
Python for physicists. introductionPython for physicists. introduction
Python for physicists. introduction
 
Theme25-jQuery2
Theme25-jQuery2Theme25-jQuery2
Theme25-jQuery2
 
Theme24-jQuery
Theme24-jQueryTheme24-jQuery
Theme24-jQuery
 
Theme23-oop2(end)
Theme23-oop2(end)Theme23-oop2(end)
Theme23-oop2(end)
 
Theme23-oop2
Theme23-oop2Theme23-oop2
Theme23-oop2
 
Theme22-OOP
Theme22-OOPTheme22-OOP
Theme22-OOP
 
Theme21_json
Theme21_jsonTheme21_json
Theme21_json
 
Theme20_ajax
Theme20_ajaxTheme20_ajax
Theme20_ajax
 
Theme19_css
Theme19_cssTheme19_css
Theme19_css
 
Theme18_css
Theme18_cssTheme18_css
Theme18_css
 
Theme17a css
Theme17a cssTheme17a css
Theme17a css
 
Coding for Future in Lutsk. JavaScript. Part 13
 Coding for Future in Lutsk. JavaScript. Part 13 Coding for Future in Lutsk. JavaScript. Part 13
Coding for Future in Lutsk. JavaScript. Part 13
 
Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12
 
Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11
 
Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10
 
Coding for Future in Lutsk. JavaScript. Part 9
Coding for Future in Lutsk. JavaScript. Part 9Coding for Future in Lutsk. JavaScript. Part 9
Coding for Future in Lutsk. JavaScript. Part 9
 
Coding for Future in Lutsk. JavaScript. Part 8
Coding for Future in Lutsk. JavaScript. Part 8Coding for Future in Lutsk. JavaScript. Part 8
Coding for Future in Lutsk. JavaScript. Part 8
 

Recently uploaded

Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
olaola5673
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
Olga Kudriavtseva
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
olaola5673
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
Olga Kudriavtseva
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
Репетитор Історія України
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
Olga Kudriavtseva
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
tetiana1958
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
estet13
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
ssuser7541ef1
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 

Recently uploaded (10)

Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
 

Theme16

  • 1. Події миші • mousedown – натискання кнопки миші над елементом. • mouseup – відпускання кнопки миші над елементом. • mouseover – мишка з’явилась над елементом. • mouseout – мишка пішла з елемента. • mousemove – рух мишки над елементом. • click – клік миші (= mousedown + mouseup). • contextmenu – клік правою кнопкою миші на елементі. • dblclick – подвійний клік миші.
  • 2. Крім призначених обробників, перераховані події миші мають дії браузера по замовчуванню. Наприклад, подвійний клік на слові виділяє слово, права клавіша викликає контекстне меню. Відмінити дію по замовчуванню можна за таким зразком: <div oncontextmenu="return false">Якийсь контент</div>
  • 3. Координати миші Розрізніються координати відносно вікна (clientX/clientY) і відносно документа (pageX/pageY). Приклад 1: <div onmousemove="showCoords(event)"> // можна начепити і на body Рухайте мишкою десь тут<br> Рухайте мишкою десь тут<br> Рухайте мишкою десь тут<br> </div> <p id="demo"></p> <script> function showCoords(event) { var x = event.clientX; var y = event.clientY; var coords = "X coords: " + x + ", Y coords: " + y; document.getElementById("demo").innerHTML = coords; } </script>
  • 4. Задача 69 Завантажте і розпакуйте файл goo.gl/VGb1M4. Змініть html-документ так, щоб при переміщенні мишки правіше від зображення, картинка змінювалась на eyes_right.png.
  • 5. Розв’язок <body onmousemove="myFunction(event)"> <div style="width: 600px; height: 600px"> <!-- Горизонтальне положення картинки: 400 px --> <img src="images/eyes_left.png" id="eyes" style="position:absolute;left:400px;top:300px"> </div> <script> function myFunction(event) { if (event.clientX > 400 + 32) { eyes.src="images/eyes_right.png"; } else { eyes.src="images/eyes_left.png"; } } </script> </body>
  • 6. setTimeout і setInterval Ці методи дозволяють запускати функції через задану кількість мілісекунд. Синтаксис: setTimeout(function, milliseconds[, param1, param2, ...]) setInterval(function, milliseconds[, param1, param2, ...]) Повертають ID таймера setTimeout чи setInterval (можна використати для їх зупинки через clearTimeout() чи clearInterval() ).
  • 7. setTimeout запускає функцію через вказане число мілісекунд (один раз). setInterval запускає періодично функцію через вказане число мілісекунд. param1, param2, ... – аргументи, які можна передати функції (при потребі). В якості функції може бути і анонімна функція: setTimeout(function() { alert('Тік-так') }, 1000);
  • 8. Приклад 1. <body> <p>Клацніть на кнопку, щоб відкрити нове вікно, яке автоматично закриється через 3 секунди</p> <button onclick="openWin()">Відкрити "myWindow"</button> <script> function openWin() { var myWindow = window.open("", "myWindow", "width=200, height=100"); myWindow.document.write("<p>Це вікно 'myWindow'</p>"); setTimeout(function(){ myWindow.close() }, 3000); } </script> </body>
  • 9. Приклад 2. <p>Наш час:</p> <p id="demo"></p> <script> var myVar = setInterval(myTimer, 1000); function myTimer() { var d = new Date(); var t = d.toLocaleTimeString(); document.getElementById("demo").innerHTML = t; } </script>
  • 10. setTimeout і setInterval повертають ідентифікатори таймера timerId, які можна використати для скасування дій. Синтаксис: var timerId = setTimeout(...); clearTimeout(timerId);
  • 11. Приклад 3 (clearTimeout). <p>Клацніть на "кнопка 1" і через 3 сек буде alert</p> <p>Але якщо встигнете клацнути на "кнопка 2", то нічого не буде</p> <button onclick="myFunction()">кнопка 1</button> <button onclick="myStopFunction()">кнопка 2</button> <script> var myVar; function myFunction() { myVar = setTimeout(function(){ alert("Hello") }, 3000); } function myStopFunction() { clearTimeout(myVar); } </script>
  • 12. Задача 70 Завантажте зображення: goo.gl/4gUP6s Створіть html-документ з зображенням dice6.png і кнопками Start і Stop. Напишіть код, який при натисканні на Start випадковим чином змінюватиме зображення з інтервалом 1 сек. Кнопка Stop повинна зупиняти зміну.
  • 13. Розв’язок <img src="images/dice6.png" id=diceImage> <button onclick="startMove()">Start</button> <button onclick="stopMove()">Stop</button> <script> var timerID; function startMove() { timerID = setInterval(changeImage, 1000); } function stopMove() { clearTimeout(timerID); } function changeImage() { var rnd=Math.floor(Math.random()*6) + 1; diceImage.src="images/dice"+rnd+".png"; } </script>
  • 14. Задача 70.1 Змініть код з попередньої задачі так, щоб інтервал між змінами зображень щоразу збільшувався на 20%, починаючи від 50 ms. Зміна повинна припинитись, коли інтервал досягає значення 1000 ms.
  • 15. Розв’язок <script> var timerID; var interval = 50; function startMove() { timerID = setTimeout(changeImage, interval); } function stopMove() { clearTimeout(timerID); } function changeImage() { var rnd=Math.floor(Math.random()*6) + 1; diceImage.src="images/dice"+rnd+".png"; interval *= 1.2; if (interval > 1000) { clearTimeout(timerID); interval = 50; } else { startMove(); } } </script>
  • 16. Задача 70.2 Домашнє завдання: 1. Змініть код з попередньої задачі так, щоб старт і стоп спрацьовували при натисканні на ту саму кнопку. 2. Змініть функцію зміни зображення так, щоб зміна гарантовано відбувалась на іншу картинку.