Почему не работает MutationObserver?
JS
let observer = new MutationObserver(elements => {
for(let elem of elements){
if(elem.tagName == 'P'){
elem.style.backgroundColor = 'red';
}
}
});
let div = document.querySelector('#test');
observer.observe(div, {
childList:true,
subtree: true
});
let p = document.createElement('p');
p.innerHTML = 'wewew';
div.append(p);
HTML
<!DOCTYPE html>
<html>
<body>
<div id='test'></div>
</body>
</html>
Ответы (1 шт):
Автор решения: Eugene Pavlyuk
→ Ссылка
let observer = new MutationObserver(elements => {
for(let elem of elements){
if(elem.target.tagName == 'P'){
elem.target.style.backgroundColor = 'red';
}
}
});
let div = document.querySelector('#test');
observer.observe(div, {
childList:true,
subtree: true
});
let p = document.createElement('p');
div.append(p);
p.innerHTML = 'wewew';
Тут два изменения. Присвоение innerHTML после append иначе мутейшен срабатывает только на div. В elem у вас на самом деле не элемнет dom, а MutationRecord.
MutationRecord содержит иформацию о конкретном изменении DOM, у ней есть свойство target которое ссылается на изменившийся элемент.