JavaScript виконання коду JavaScript підключення зовнішнього файлу JavaScript console.log JavaScript змінні і константи JavaScript типи даних JavaScript операції зі змінними JavaScript перетворення даних JavaScript масиви JavaScript умовні конструкції JavaScript цикли JavaScript функції JavaScript область видимості змінних JavaScript замикання і функції IIFE JavaScript Паттерн Модуль JavaScript рекурсивні функції JavaScript перевизначення функцій JavaScript hoisting JavaScript передача параметрів за значенням і за посиланням JavaScript стрілочні функції JavaScript ООП Object JavaScript ООП вкладені об'єкти і масиви в об'єктах JavaScript ООП перевірка наявності і перебір методів і властивостей JavaScript ООП об'єкти у функціях JavaScript ООП конструктори об'єктів JavaScript ООП розширення об'єктів. prototype JavaScript ООП інкапсуляція JavaScript ООП Функція як об'єкт. Методи call і apply JavaScript ООП спадкування JavaScript ООП Ключове слово this JavaScript ООП Object destructuring JavaScript ООП класи JavaScript ООП Date. Робота з датами JavaScript Об'єкт Math. математичні операції JavaScript Об'єкт Array. Робота з масивами JavaScript ООП об'єкт Number JavaScript String JavaScript String Об'єкт RegExp. Регулярні вирази JavaScript String Регулярні вирази в методах String JavaScript String Синтаксис регулярних виразів JavaScript Робота з браузером і BOM JavaScript діалогові вікна JavaScript Історія браузера. об'єкт history JavaScript об'єкт location JavaScript об'єкт navigator JavaScript таймери JavaScript DOM Введення JavaScript DOM Об'єкт document. Пошук елементів JavaScript DOM Властивості об'єкта document JavaScript DOM Об'єкт Node. Навігація по DOM JavaScript DOM Створення, додавання і видалення елементів веб-сторінки JavaScript DOM Об'єкт Element. управління елементами JavaScript DOM Зміна стилю елементів JavaScript події. Введення в обробку подій. JavaScript події обробники JavaScript події. об'єкт Event JavaScript події. поширення подій JavaScript події миші JavaScript події клавіатури JavaScript FORMS. Форми і їх елементи JavaScript FORMS. Кнопки JavaScript FORMS. текстові поля JavaScript FORMS. Прапорці та перемикачі JavaScript FORMS. Список select JavaScript JSON JavaScript зберігання даних. cookie JavaScript зберігання даних. Web Storage JavaScript Collection. Ітератори JavaScript Collection. Генератори JavaScript Collection. Множина Set JavaScript Collection. Map JavaScript Collection. WeakSet і WeakMap JavaScript AJAX. XMLHttpRequest JavaScript AJAX. Відправка даних JavaScript AJAX. Promise в Ajax-запитах

JavaScript DOM Створення, додавання і видалення елементів веб-сторінки


Для створення елементів об'єкт document має наступні методи:

  • createElement (elementName) : створює елемент html, тег якого передається в якості параметра. Повертає створений елемент

  • createTextNode (text) : створює і повертає текстовий вузол. Як параметр передається текст вузла.

var elem = document.createElement("div");
var elemText = document.createTextNode("Hello World!");

Таким чином, змінна elem буде зберігати посилання на елемент div . Однак одного створення елементів недостатньо, їх ще треба додати на веб-сторінку.

Для додавання елементів ми можемо використовувати один з методів об'єкта Node :

  • appendChild (newNode) : додає новий вузол newNode в кінець колекції дочірніх вузлів

  • insertBefore (newNode, referenceNode) : додає новий вузол newNode перед вузлом referenceNode

Використаємо метод appendChild :

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>

    <div class="article">
        <h3>Заголовок статті</h3>
        <p>Перший абзац</p>
        <p>Другий абзац</p>
    </div>

<script>

var articleDiv = document.querySelector("div.article");

// створюємо елемент
var elem = document.createElement("h2");

// створюємо для нього текст
var elemText = document.createTextNode("Hello World");

// Додаємо текст в елемент в якості дочірнього елемента
elem.appendChild(elemText);

// створюємо елемент в блок div
articleDiv.appendChild(elem);

</script>

</body>
</html>

Спочатку створюємо звичайний елемент заголовка h2 і текстовий блок. Потім текстовий блок додаємо в елемент заголовка. Потім заголовок додаємо в один з елементів веб-сторінки:

Однак нам необов'язково для визначення тексту всередині елемента створювати додатковий текстовий блок, так як ми можемо скористатися властивістю textContent і безпосередньо йому привласнити текст:

var elem = document.createElement("h2");
elem.textContent = "Hello";

В цьому випадку текстовий блок буде створено неявно при установці тексту.

Тепер розглянемо, як аналогічний елемент додати в початок колекції дочірніх вузлів блоку div :

var articleDiv = document.querySelector("div.article");

// створюємо елемент
var elem = document.createElement("h2");

// створюємо для нього текст
var elemText = document.createTextNode("HELLO WORLD");

// додаємо текст в влемент в якості дочірнього елемента
elem.appendChild(elemText);

// отримуємо первший елемент, перед яким буде йти додавання
var firstElem = articleDiv.firstChild.nextSibling;

// додаємо елемент в блок div перед першим вузлом
articleDiv.insertBefore(elem, firstElem);

Якщо нам треба вставити новий вузол на друге, третє чи будь-яке інше місце, то нам треба знайти вузол, перед яким треба вставляти, за допомогою комбінацій властивостей firstChild / lastChild і nextSibling / previousSibling .


копіювання елемента

Іноді елементи бувають досить складними за складом, і набагато простіше їх скопіювати, ніж за допомогою окремих викликів створювати з вміст. Для копіювання вже наявних вузлів у об'єкта Node можна використовувати метод cloneNode () :

var articleDiv = document.querySelector("div.article");

// клонуємо елемент articleDiv
var newArticleDiv = articleDiv.cloneNode(true);

// додаємо в кінець елемента body
document.body.appendChild(newArticleDiv);

У метод cloneNode() як параметр передається логічне значення: якщо передається true , то елемент буде копіюватися з усіма дочірніми вузлами; якщо передається false - то копіюється без дочірніх вузлів. Тобто в даному випадку ми копіюємо вузол з усім його вмістом і потім додаємо в кінець елемента body .


видалення елемента

Для видалення елемента викликається метод removeChild () об'єкта Node . Цей метод видаляє один з дочірніх вузлів:

var articleDiv = document.querySelector("div.article");

// находимо блок, який будемо видаляти- перший параграф
var removableNode = document.querySelectorAll("div.article p")[0];

// видаляємо блок
articleDiv.removeChild(removableNode);

В даному випадку видаляється перший параграф з блоку div


заміна елемента

Для заміни елемента застосовується метод replaceChild (newNode, oldNode) об'єкта Node . Цей метод в якості першого параметра приймає новий елемент, який замінює старий елемент oldNode , що передається в якості другого параметра.

var articleDiv = document.querySelector("div.article");

// находимо блок, який будемо замінювати - перший параграф
var oldNode = document.querySelectorAll("div.article p")[0];

// створюємо елемент
var newNode = document.createElement("h2");

// створюємо для нього текст
var elemText = document.createTextNode("HELLO WORLD");

// додаємо текст в елемент в якості дочірнього елемента
newNode.appendChild(elemText);

// замінюємо старий блок новим
articleDiv.replaceChild(newNode, oldNode);

В даному випадку замінюємо перший параграф заголовком h2 :


Наш партнер:
beta test mp3 playlist downloader