Интерфейс DocumentFragment в JavaScript: создание элементов DOM

В этом руководстве вы узнаете об интерфейсе JavaScript DocumentFragment для создания узлов DOM и обновления их до активного дерева DOM.

Интерфейс DocumentFragment — это упрощенная версия Document, в которой хранится часть структуры документа, как в стандартном документе. Однако он не является частью активного дерева DOM.

Если вы вносите изменения в фрагмент документа, это не влияет на документ и на производительность.

Как правило, вы используете DocumentFragment для создания узлов DOM и добавления или вставки их в активное дерево DOM с помощью appendChild() или insertBefore().

Чтобы создать новый фрагмент документа, используйте конструктор следующим образом:

let fragment = new DocumentFragment();

Или вы можете использовать метод createDocumentFragment() объекта Document :

let fragment = document.createDocumentFragment();

Этот DocumentFragment наследует методы своего родителя Node, а также реализует методы интерфейса ParentNode, такие как querySelector() и querySelectorAll().

DocumentFragment

Пример

Предположим, что у вас есть элемент <ul> с идентификатором language :

<ul id="language"></ul>

Следующий код создает список элементов <li>( <li> ) и добавляет каждый элемент к элементу <ul> с помощью DocumentFragment :

let languages = ['JS', 'TypeScript', 'Elm', 'Dart','Scala'];

let langEl = document.querySelector('#language')

let fragment = new DocumentFragment();
languages.forEach((language) => {
    let li = document.createElement('li');
    li.innerHTML = language;
    fragment.appendChild(li);
})

langEl.appendChild(fragment);

Как это работает:

  • Сначала выберите элемент <ul> по его идентификатору с помощью метода querySelector().
  • Во-вторых, создайте новый document fragment.
  • В-третьих, для каждого элемента в массиве languages создайте элемент элемента списка, назначьте innerHTML элемента списка language и добавьте все вновь созданные элементы списка к фрагменту документа.
  • Наконец, добавьте фрагмент документа к элементу <ul>.

Соединим все это вместе:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DocumentFragment Demo</title>
</head>
<body>
    <ul id="language"></ul>

    <script>
        let languages = ['JS', 'TypeScript', 'Elm', 'Dart', 'Scala'];

        let langEl = document.querySelector('#language');
        let fragment = new DocumentFragment();

        languages.forEach((language) => {
            let li = document.createElement('li');
            li.innerHTML = language;
            fragment.appendChild(li);
        })

        langEl.appendChild(fragment);
    </script>

</body>
</html>
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript