W języku JavaScript metoda document.createElement("p") ma za zadanie
appendChild.querySelector("p"). createElement tworzy nowy element.appendChild.remove() albo removeChild, a nie metoda tworząca.document.createElement("p") tworzy w pamięci nowy, pusty element <p> i zwraca do niego odniesienie. Element jeszcze nie jest częścią strony i niczego nie widać. Dopiero wstawienie go do drzewa dokumentu, np. document.body.appendChild(akapit), sprawia, że się pojawi.
Typowy schemat ma trzy kroki: let akapit = document.createElement("p");, potem akapit.textContent = "Nowy akapit";, na koniec document.getElementById("lista").appendChild(akapit);. Do wstawiania służą też append, prepend i insertBefore. Tak budują zawartość strony skrypty, które dopisują wiersze tabeli albo pozycje listy po kliknięciu przycisku.
Element tworzony w ten sposób jest od razu obiektem, więc można mu nadać klasę przez className jeszcze przed wstawieniem.
Wybór błędnej odpowiedzi bierze się najczęściej z założenia, że utworzony element od razu staje się widoczny. Tak nie jest: createElement tylko tworzy obiekt, a o jego miejscu w dokumencie decyduje osobne wywołanie appendChild lub append. Bez tego akapit zniknie razem ze zmienną.
Odniesienie do istniejącego akapitu zwraca document.querySelector("p") albo document.getElementsByTagName("p")[0]. Te metody szukają elementów, które już są w dokumencie. createElement nikogo nie szuka, tylko tworzy nowy obiekt.
Usuwanie elementów wykonuje się metodą remove() na elemencie albo removeChild na jego rodzicu. Żadna metoda o nazwie zaczynającej się od create niczego nie usuwa.
Kolejność jest zawsze taka sama: utwórz element, uzupełnij jego treść i atrybuty, wstaw go do dokumentu. Pominięcie ostatniego kroku to najczęstszy powód, dla którego skrypt „nic nie robi”, choć nie zgłasza żadnego błędu w konsoli.