Aquí está el código en cuestión:
var p = document.createElement("p"); holder.appendChild(p); setTimeout(function(){ if (holder.firstChild != null){ holder.removeChild(holder.firstChild); } },500);Entonces, la funcionalidad esperada es que la p entre en el soporte y en 500 ms se elimine. Sin embargo, el elemento p permanece para siempre, aunque puedo confirmar que el elemento no es nulo. ¿Que esta pasando?
Dado que el nodo firstChild puede ser un nodo #text
Utilice .firstElementChild o simplemente : p.remove()
Ejemplo:
// DOM utility functions: const find = (sel, parent) => (parent ||document).querySelector(sel); const create = (tag, props) => Object.assign(document.createElement(tag), props); // Task: const elHolder = find("#holder"); const elP = create("p", {textContent: "I will get removed soon!"}); elHolder.append(elP); setTimeout(() => { elP.remove(); }, 1000); <div id="holder"></div>