Ce face insertAdjacentHTML / insertAdjacentElement
Pozițiile sunt: "beforebegin" (înaintea elementului), "afterbegin" (la începutul conținutului), "beforeend" (la sfârșitul conținutului) și "afterend" (după element).
insertAdjacentHTML interpretează textul ca HTML, dar, spre deosebire de innerHTML +=, nu reconstruiește conținutul existent, deci ascultătorii de evenimente rămân. Ca la innerHTML, nu-i da texte venite de la utilizator. insertAdjacentElement inserează un element creat, iar insertAdjacentText un text simplu, sigur.
Parametri
| Parametru | Descriere |
|---|---|
pozitie |
"beforebegin", "afterbegin", "beforeend" sau "afterend". |
html / element / text |
Ce se inserează. |
Ce returnează
insertAdjacentElement: elementul inserat (sau null); celelalte: undefined.
Exemple
Exemplul 1: Cele patru poziții
<ul id="lista"><li>existent</li></ul>
<script>
const lista = document.getElementById("lista");
lista.insertAdjacentHTML("beforebegin", "<h3>Titlu</h3>");
lista.insertAdjacentHTML("afterbegin", "<li>primul</li>");
lista.insertAdjacentHTML("beforeend", "<li>ultimul</li>");
lista.insertAdjacentText("afterend", "<b>text, nu HTML</b>");
console.log(lista.parentElement.innerHTML);
</script>
Rezultat în browser
<h3>Titlu</h3><ul id="lista"><li>primul</li><li>existent</li><li>ultimul</li></ul><b>text, nu HTML</b>
Exemplul 2: Un mesaj adăugat sub formular
const formular = document.querySelector("form");
const eroare = document.createElement("p");
eroare.className = "eroare";
eroare.textContent = "Completează adresa de email.";
console.log(formular.insertAdjacentElement("afterend", eroare) === eroare);
Rezultat în browser
true
Greșeli frecvente
- Construiești HTML cu date de la utilizator și îl dai lui
insertAdjacentHTML. Este la fel de vulnerabil la XSS cainnerHTML.
Comenzi înrudite
textContent / innerHTML: Citește sau schimbă conținutul unui element: ca text simplu sau ca HTML.append / prepend / before / after: Adaugă elemente sau texte la sfârșitul, la începutul, înaintea sau după un element.document.createElement: Creează un element HTML nou (încă invizibil), pe care îl completezi și apoi îl adaugi în pagină.