1. Задача 57
Напишіть функцію formatDate(date), яка виводить дату і час
date у форматі гг:хх дд.мм.рр.
Наприклад:
var d = new Date(2017, 5, 15, 20, 15);
alert( formatDate(d) ); // '20:15 15.06.17'
Зауваження: повинні бути присутні ведучі нулі, тобто 1
січня 2001 повинно бути 01.01.01, а не 1.1.1.
Розв’язок (з коментарями і належним оформленням коду)
надішліть на адресу viligurskyi@gmail.com
2. Date.now()
Метод Date.now() повертає дату зразу у
вигляді мілісекунд.
Аналогічний до +new Date(), але значно
швидший, оскільки не створює проміжного
об’єкту Date.
Ще один спосіб: new Date().getTime()
3. Дати можна віднімати, отримуючи
різницю в мілісекундах. Це корисно для
вимірювання інтервалів часу.
Приклад:
<script>
var start = new Date; // засікли час
// щось виконуємо
for (var i = 0; i < 10000; i++) {
for (var j = 0; j < 10000; j++) {
var doSomething =i*j;
}
}
var end = new Date; // кінець вимірювання
alert( "Цикл зайняв " + (end - start) + " ms" );
</script>
4. Задача 58
Виведіть тривалість Вашого життя у
секундах, хвилинах, годинах і днях.
Приклад:
Я прожив:
1409938889 секунд
23498981 хвилин
391649 годин
16318 днів
6. DOM. Продовження
childNodes, firstChild, lastChild
Властивість childNodes повертає
колекцію дочірніх вузлів елемента,
включно з текстовими.
Вузлами є, зокрема, тексти, навіть
пробіли і коментарі.
Доступ до вузлів можливий за їхніми
індексами (починаючи з 0).
7. Приклад.
<p>Кількість і перелік вузлів</p>
<div id="myDIV">
<p>Перший абзац (index 1)</p>
<p>Другий абзац (index 3)</p>
</div>
<p id="demo"></p>
<script>
var n =
document.getElementById("myDIV").childNodes.length; //5!
document.getElementById("demo").innerHTML = "Кількість
вузлів: " + n;
for (var i = 0; i < n; i++) {
document.getElementById("demo").innerHTML +=
"<br>" + document.getElementById("myDIV").childNodes[i];
}
</script>
8. firstChild і lastChild забезпечують
швидкий доступ до першого і останнього
елементів:
elem.childNodes[0] === elem.firstChild
elem.childNodes[elem.childNodes.length -
1] === elem.lastChild
9. Навігація по елементах
children на противагу childNodes дає
доступ тільки до дочірніх вузлів-
елементів, тобто до тегів.
children – дочірні вузли-елементи (теги).
firstElementChild, lastElementChild –
перший і останній діти-елементи.
previousElementSibling,
nextElementSibling – сусіди-елементи.
parentElement – батьківський елемент.
10. Попередній приклад з children замість childNodes.
<p>Кількість і перелік вузлів</p>
<div id="myDIV">
<p>Перший абзац (index 0)</p>
<p>Другий абзац (index 1)</p>
</div>
<p id="demo"></p>
<script>
var n =
document.getElementById("myDIV").children.length;
document.getElementById("demo").innerHTML = "Кількість
елементів: " + n;
for (var i = 0; i < n; i++) {
document.getElementById("demo").innerHTML +=
"<br>" + document.getElementById("myDIV").children[i];
}
</script>
11. Приклад дітей елемента body.
<body>
<p>Абзац 1</p>
<div>
<p>Абзац 2 (в DIV'і)</p>
</div>
<p id="demo"></p>
<script>
var c = document.body.children;
var txt = "";
for (var i = 0; i < c.length; i++) {
txt = txt + c[i].tagName + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>
</body>
13. Додавання і вилучення вузлів
Для створення нових елементів сторінки
за допомогою JavaScript
використовуються методи:
document.createElement(element)
document.appendChild(element)
14. Наприклад, створимо новий елемент з
заданим тегом:
document.createElement(tag)
var par =
document.createElement("P");
Так створюється новий порожній абзац,
який ще не поміщений нікуди, тобто в
жодний елемент документа.
15. Далі створимо новий текстовий вузол:
document.createTextNode(text)
var t =
document.createTextNode("Якийсь
текст");
Так створюється текстовий вузол з
наповненням, який ще не поміщений
нікуди, тобто в жодний елемент
документа.
16. Тепер додамо текстовий вузол в
елемент за допомогою appendChild.
Синтаксис:
parentElem.appendChild(node)
Додається node у кінець дочірніх
елементів parentElem.
Приклад:
par.appendChild(t);
Так текстовий t вузол поміщаємо в
абзац par, але сам абзац ще нікуди не
поміщений.
17. Абзац поміщаємо в body документа вже
знайомим методом appendChild:
document.body.appendChild(par);
Повністю:
<body>
<p>Перший абзац</p>
<script>
var par = document.createElement("P");
var t = document.createTextNode("Другий
абзац");
par.appendChild(t);
document.body.appendChild(par);
</script>
</body>
18. Можна помістити елемент всередину іншого
елемента (якщо це допускається в HTML):
document.body.appendChild(par);
<div id="div1">
<p>Текст в DIV'і</p>
</div>
<p>Перший абзац</p>
<script>
var par = document.createElement("P");
var t = document.createTextNode("Другий абзац");
par.appendChild(t);
document.getElementById("div1").appendChild(par);
</script>
19. Один і той самий елемент не можна вставити двічі.
<div id="div1">
<p>Текст в DIV1</p>
</div>
<div id="div2">
<p>Текст в DIV2</p>
</div>
<script>
var par = document.createElement("P");
var t = document.createTextNode("Новий текст");
par.appendChild(t);
document.getElementById("div2").appendChild(par);
// скасується наступним рядком
document.getElementById("div1").appendChild(par);
</script>
Але елемент можна клонувати (див. далі)
20. Задача 59
Створіть документ:
...
<ul id="List1">
<li>Coffee</li>
<li>Tea</li>
</ul>
<ul id="List2">
<li>Water</li>
<li>Milk</li>
</ul>
<script>
alert(1);
</script>
...
Напишіть після alert такий код, який перемістить
елемент "Milk" з другого списку в кінець першого.
23. Задача 60
Створіть документ:
...
<p><strong>Меню</strong></p>
<ol id="myList">
<li>Салат</li>
<li>Борщ</li>
<li>Картопля фрі</li>
<li>Кава</li>
</ol>
<script>
alert(1);
</script>
...
Напишіть після alert такий код, який буде вставляти
додатковий елемент в меню "Тістечко" перед елементом "Кава".
25. Клонування вузлів. cloneNode()
Створює копію вузла і повертає вузол.
node.cloneNode(deep)
Необов’язковий логічний параметр deep
визначає глибину клонування:
elem.cloneNode(true) – копія з
атрибутами і дочірніми елементами.
elem.cloneNode(false) – без дочірніх
елементів (default).
26. Задача 61
Створіть документ:
...
<ul id="List1">
<li>Coffee</li>
<li>Tea</li>
</ul>
<ul id="List2">
<li>Water</li>
<li>Milk</li>
</ul>
<script>
alert(1);
</script>
...
Напишіть після alert такий код, який скопіює елемент
"Milk" з другого списку в кінець першого.
28. Видалення і заміна вузлів
parentElem.removeChild(node)
Видаляє node з числа дітей parentElem.
parentElem.replaceChild(newNode, node)
Видаляє node і на його місце вставляє
newNode.
29. Задача 62
Створіть документ:
...
<ul id="List1">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
<script>
alert(1);
</script>
...
Напишіть після alert такий код, який видалить
елемент "Tea" зі списку.
31. Задача 63
Створіть документ:
...
<ul id="List1">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
<script>
alert(1);
</script>
...
Напишіть після alert такий код, який замінить
елемент "Tea" на "Sugar".