Poznajemy properties klasy Node (czyli węzła). Do dzieła.

n.parentNode: zwraca rodzica-węzeł.

n.parentElement: zwraca rodzica-element, jeżeli rodzic nie jest elementem, zwraca null.

n.isConnected: zwraca bool, czy węzeł został podłączony, czy nie. Przykład z MDN:

let test = document.createElement("p");
console.log(test.isConnected); // Returns false
document.body.appendChild(test);
console.log(test.isConnected); // Returns true

Tutaj mamy createElement, ale Element jest także węzłem. Równie dobrze moglibyśmy użyć:

  • createTextNode
  • createAttribute
  • createComment
  • createDocumentFragment

I też sprawdzić, czy został podłączony. Ponadto być może pamiętamy connectedCallback z lekcji o web componentach:

class AnchorScroll extends HTMLAnchorElement {
    connectedCallback(){
        this.addEventListener("click", function(e){
            e.preventDefault();
            const anchor = this.getAttribute('href');
            document.querySelector(anchor).scrollIntoView({
                behavior: 'smooth'
            });
        });
    }
}

customElements.define('custom-anchor', AnchorScroll, {extends: 'a'});

Jak pamiętamy, to w domu jesteśmy.

n.textContent: zawartość tekstowa węzła

n.childNodes: dzieci – wszystkie dzieci, nie tylko elementy, a zarazem tylko bezpośrednie dzieci, nie potomkowie. Dla przypomnienia:

<ul id="myUl">
        Just text node
        <li>Text node in li <span>text node in span</span></li>
        <li>Li 2 text node</li>
</ul>

Tu mamy 5 dzieci:

  • text node – just tex node + \n
  • element li
  • text node – \n
  • element li
  • text node \n

Span to dziecko firstElementChild, czili li, text node in span to firstChild – dziecko spana, Li 2 text node to firstChild (tekstowy, nie elementowy) elementu li

n.firstChild: pierwsze dziecko (nieważne czy element, czy tekst, czy komentarz) danego węzła

n.lastChild: ostatnie dziecko węzła. W przypadku naszej listy Just text node to pierwsze dziecko, zaś ostatnim jest… nie, nie element li, text node „\n”, tak!

n.nextSibling: następny braciszek, dla Just text node jest to element li

n.previousSibling: poprzedni braciszek, dla pierwszego li jest to Just text node, dla drugiego li jest to pierwszy li

n.nodeValue: głupota, nie używać w ciemno, gdy nie znamy typu node, bo może oznaczać różne rzeczy w zależności od typu

n.nodeName: rodzaj węzła w postaci stringa

n.nodeType: rodzaj węzła w postaci liczbowej

n.ownerDocument: dokument do którego należy węzeł.