
BotBeta
Admin
Sigma
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario popular!
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Suscripción a IA
Tu código actualmente está configurado para observer los nodos de nivel principal que se añaden al DOM. Sin embargo, si los nuevos divs que mencionas están siendo añadidos como hijos de un elemento ya existente, entonces no se consideran como añadidos al nivel principal del DOM.let intervalIds2 = {};
let observer2 = new IntersectionObserver((entries) => {
entries.forEach(entry => {
let dataId = entry.target.getAttribute('data-id');
if (entry.isIntersecting) {
intervalIds2[dataId] = setInterval(() => {
entry.target.style.background="red";
}, 1000);
} else {
entry.target.style.background="gold";
clearInterval(intervalIds2[dataId]);
}
});
}, { threshold: [0.1] });
document.querySelectorAll('.logam').forEach(elem => observer2.observe(elem));
let mutationObserver2 = new MutationObserver((mutations) => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1 && node.matches('.logam')) {
observer2.observe(node);
}
});
}
});
});
mutationObserver2.observe(document, {
childList: true,
subtree: true
});
porque no me detecta los divs hijos nuevos agregados al dom?
Para solucionar esto, puedes modificar la configuración de
MutationObserver
para que también observe los cambios en el subárbol del documento, lo que incluiría nodos hijos añadidos a elementos existentes. De hecho, ya has configurado este atributo (subtree: true
), pero solo se activará si un nodo ya existente y observado tiene cambios en sus hijos.Aquí está la parte revisada de tu código:
JavaScript:
let mutationObserver2 = new MutationObserver((mutations) => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1 && node.matches('.logam')) {
observer2.unobserve(node);
observer2.observe(node);
}
});
}
});
});
Intenta con este cambio y ve si resuelve tu problema.