Poznajemy najważniejsze metody klasy Document. Wiele z nich już poznaliśmy, jest to dobry moment, aby uporządkować wiedzę plus dodać kilka nowych rzeczy.
d.createAttribute(): tworzy atrybut (node typu Attribute, które może przyjąć element korzystając z metody setAttributeNode):
const node = document.getElementById("div1");
const a = document.createAttribute("my_attrib");
a.value = "newVal";
node.setAttributeNode(a);
console.log(node.getAttribute("my_attrib")); // "newVal"
d.createElement(): znamy, tworzy element
d.createComment(): znamy, tworzy komentarz
d.createDocumentFragment(): tworzy document fragment. Przydatne, aby pododawać wiele rzeczy (np. w pętli) do jednego fragmentu, zamiast ciągle dodawać do dokumentu, wymuszając re-render przy każdej drobnej zmianie, potem za jednym ruchem dodać wszystko do dokumentu.
d.createExpression(): tworzy XPath expression, powiemy jeszcze sobie więcej o tym, także w kursie PHP
d.createTextNode(): tworzy text node, znamy
d.createNodeIterator(): znamy, tworzy node iterator (iteruje po dzieciach node, ale spłaszcza wszystko do jednej tablicy)
d.createTreeWalker(): znamy, tworzy tree walker, który iteruje po dzieciach elementu jako strukturze drzewa
d.getElementById(): zwraca element po jego ID (nie trzeba używać #)
d.getElementsByClassName(): zwraca HTMLCollection z obiektami o pasującej klasie
d.getElementsByTagName(): zwraca HTMLCollection z obiektami o pasującym tagu
d.getElementsByName(): zwraca HTMLCollection z obiektami o atrybucie name pasującym
d.querySelector(): zwraca pierwszy element pasujący do selektora
d.querySelectorAll(): zwraca node list z wszystkimi elementami pasującymi do selektora
d.replaceChildren(): przydaje się do dwóch rzeczy:
- albo robimy reaktywną SPA w czystym JS i chcemy wyczyścić stary content a wrzucić nowy
- albo po prostu chcemy wyczyścić wszystko z dokumentu, wtedy podajemy puste
document.replaceChildren();
document.children; // HTMLCollection []
d.prepend(): dodaj coś na początku dokumentu
d.append(): dodaj coś na końcu dokumentu
Tych kilka metod, które pominęliśmy można podzielić na kilka grup:
- bardzo stare i silnie odradzane jak open, close, write, writeln
- dotyczące głównie iframe, jak adoptNode, importNode
- eksperymentalne
- wyspecjalizowane w eventach focusowych, jak getSelection, czy też dotyczące animacji
Tym niemniej więcej tych metod znamy niż nie znamy. W zasadzie można powiedzieć, że Document mamy przerobiony a te kilka innych metod poznamy przy omawianiu innych tematów.