Spec-Zone.ru › Web APIs

MutationRecord: свойство addedNodes

Базовая поддержка Широко доступна

Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Свойство MutationRecord только для чтения addedNodes представляет собой NodeList узлов, добавленных к целевому узлу в результате мутации, наблюдаемой с помощью MutationObserver.

Значение

A NodeList содержащий узлы, добавленные к цели мутации, наблюдаемой MutationObserver.

Примеры

Обновление при добавлении узла

В следующем примере есть две кнопки: одна для добавления новых узлов в целевой узел, и одна для их удаления. Для наблюдения за изменениями в целевом узле используется MutationObserver; при обнаружении изменений наблюдатель вызывает функцию logNewNodes().

Функция logNewNodes() проверяет, что свойство type объекта MutationRecord имеет значение childList, что означает изменение дочерних элементов целевого узла. Если тип равен childlist, функция обновляет общее количество новых добавленных узлов. Обратите внимание, что нажатие кнопки "Удалить узел" не увеличит общее количество новых узлов, так как в этом случае record.addedNodes будет иметь длину 0.

HTML

<button id="add-nodes">Add a node</button>
<button id="remove-nodes">Remove a node</button>
<button id="reset">Reset</button>

<pre id="counter">Total added nodes: 0</pre>
<div id="target"></div>

JavaScript

const addNodes = document.querySelector("#add-nodes");
const removeNodes = document.querySelector("#remove-nodes");
const reset = document.querySelector("#reset");
const counter = document.querySelector("#counter");
const target = document.querySelector("#target");
let totalAddedNodes = 0;

addNodes.addEventListener("click", () => {
  const newPara = document.createElement("p");
  newPara.textContent = `Current time: ${Date.now()}`;
  target.appendChild(newPara);
});

removeNodes.addEventListener("click", () => {
  const lastChild = target.lastChild;
  if (lastChild) {
    target.removeChild(lastChild);
  }
});

reset.addEventListener("click", () => self.location.reload());

function logNewNodes(records) {
  for (const record of records) {
    // Check if the childlist of the target node has been mutated
    if (record.type === "childList") {
      totalAddedNodes = totalAddedNodes + record.addedNodes.length;
      // Log the number of nodes added
      counter.textContent = `Total added nodes: ${totalAddedNodes}`;
    }
  }
}

const observer = new MutationObserver(logNewNodes);
observer.observe(target, { childList: true });

Результат

Спецификации

Спецификация
DOM
# ref-for-dom-mutationrecord-addednodes②

Совместимость браузеров

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
addedNodes 16 12 14 15 7 18 14 14 7 1.0 4.4

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord/addedNodes

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API