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