Piszemy funkcje utils, skupiając się na sprawach związanych z elementami HTML. Do dzieła.
Sprawdzamy, czy element należy do drzewa DOM (jest obiektem i instancją elementu):
function isDOMNode(value) {
return (
typeof value === "object" &&
value instanceof Element
);
}
Sprawdzamy, czy element ma tylko tekst (nie ma dzieci HTMLowych, ma jedno dziecko-węzeł):
function elementHasTextOnly(el){
return el.childElementCount === 0 && Array.from(el.childNodes).length === 1
}
Sprawdzamy, czy element jest pusty (nie ma żadnych dzieci-węzłów):
function isEmptyElement(el){
return Array.from(el.childNodes).length === 0;
}
Sprawdzamy, czy element jest rodzicem tekstu (ma przynajmniej jedno dziecko-węzeł tekstowe):
function isTextNodeParent(el){
let childNodes = Array.from(el.childNodes);
return childNodes.some((el) => el.nodeType == Node.TEXT_NODE);
}
Różnica pomiędzy children a childNodes, którą powinniśmy sobie przyswoić:
let el = document.createElement("div");
el.textContent = "foo";
el.childNodes.length === 1; // Contains a Text node child.
el.children.length === 0; // No Element children.