MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Crearea, adăugarea, înlocuirea şi ștergerea elementelor.

Crearea elementelor

Pentru a crea elemente, obiectul document are următoarele metode:

  • createElement(elementName): Creează un element HTML, a cărui etichetă este transmisă ca parametru. Returnează elementul creat
  • createTextNode(text): Creează și returnează un nod text. Textul nodului este transmis ca parametru

Creem un element folosind createElement:

const header = document.createElement("h1");        // cream un titlu <h1>
console.log(header);  // <h1></h1>

Astfel, variabila header va stoca o referință la elementul h1.

Creem un nod text folosind createTextNode:

const headerText = document.createTextNode("Hello World"); // cream un nod text
console.log(headerText);  // "Hello World"

Adăugarea elementelor

Dar nu este suficient să creăm elemente, acestea trebuie adăugate și pe pagină.

Pentru adăugarea elementelor putem folosi una dintre metodele obiectului Node:

  • appendChild(newNode): Adaugă un nou nod newNode la sfârșitul colecției de noduri copil
  • insertBefore(newNode, referenceNode): Adaugă un nou nod newNode înaintea nodului referenceNode

Folosim metoda appendChild():

const header = document.createElement("h1");        // cream un titlu <h1>
const headerText = document.createTextNode("Hello World"); // cream un nod text
header.appendChild(headerText); // adaugam in elementul h1 nodul text
console.log(header);

 // <h1>Hello World</h1>

Și pentru a adăuga elementul creat pe pagină, trebuie să îl adăugăm într-un element existent deja pe pagină.

Desigur, iată traducerea comentariilor din rusă în română în codul tău HTML:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
</head>
<body>
   <script>
   const header = document.createElement("h1");     // cream un titlu <h1>
   const headerText = document.createTextNode("Hello World");  // cream un nod text
   header.appendChild(headerText); // adaugam nodul text în elementul h1
   document.body.appendChild(header);  // adaugam elementul h1 pe pagina, în elementul body
   </script>
</body>
</html>

Mai întâi, creăm un element de titlu obișnuit h2 și un nod text. Apoi, adăugăm nodul text în elementul de titlu. Apoi, adăugăm titlul în elementul body:

Trebuie menționat că nu este obligatoriu să creăm un nod text suplimentar pentru definirea textului în interiorul unui element, deoarece putem folosi proprietatea textContent și să-i atribuim direct textul:

const header = document.createElement("h1");        // creăm un titlu <h1>
header.textContent = "Hello World"; // definim textul elementului

În acest caz, nodul text va fi creat implicit la stabilirea textului.

Metoda insertBefore

Metoda appendChild() adaugă un element la sfârșitul containerului. Pentru a specifica mai exact locul adăugării, se poate folosi o altă metodă - insertBefore(), care adaugă un element înaintea unui alt element. De exemplu, avem următoarea pagină:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
</head>
<body>
   <p>Text 1</p>
   <p>Text 2</p>
</body>
</html>

Să presupunem că trebuie să adăugăm în elementul body, înaintea primului paragraf, un titlu. Putem face acest lucru astfel:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
</head>
<body>
   <p>Text 1</p>
   <p>Text 2</p>
   <script>
   const header = document.createElement("h1");        // creăm un titlu <h1>
   header.textContent = "Page Header"; // definim textul elementului
   // obținem primul paragraf
   const firstP = document.body.firstElementChild;
   // adăugăm elementul h1 înaintea paragrafului firstP
   document.body.insertBefore(header, firstP);
   </script>
</body>
</html>

Dacă avem nevoie să inserăm un nod nou pe a doua, a treia sau orice altă poziție, trebuie să găsim nodul înaintea căruia trebuie să inserăm, folosind combinații ale proprietăților firstElementChild/lastElementChild și nextSibling/previousSibling.

Copierea elementului

Uneori elementele pot fi destul de complexe în compoziție, și este mult mai simplu să le copiem decât să creăm conținutul lor cu apeluri separate. Pentru a copia nodurile deja existente, la obiectul Node se poate folosi metoda cloneNode():

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
</head>
<body>
   <div id="article">
       <h1>Home Page</h1>
       <p>Text 1</p>
       <p>Text 2</p>
   </div>
   <script>
   const article = document.getElementById("article");
   // obținem ultimul paragraf
   const lastP = article.lastElementChild;
   // clonăm elementul lastP
   const newLastP = lastP.cloneNode(true);
   // modificăm textul
   newLastP.textContent = "Data publicării: 28/10/2023";
   // adăugăm la sfârșitul elementului article
   article.appendChild(newLastP);
   </script>
</body>
</html>

În metoda cloneNode(), ca parametru se transmite o valoare logică: dacă se transmite true, atunci elementul va fi copiat cu toate nodurile sale fiice; dacă se transmite false - atunci se copiază fără nodurile fiice. Astfel, în acest caz, copiem nodul cu tot conținutul său și apoi îl adăugăm la sfârșitul elementului cu id="article".

Pentru înlocuirea unui element se utilizează metoda replaceChild(newNode, oldNode) a obiectului Node. Această metodă, ca prim parametru, primește un element nou care înlocuiește elementul vechi oldNode, transmis ca al doilea parametru.

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
</head>
<body>
   <div id="article">
       <p>Home Page</p>
       <p>Text 1</p>
       <p>Text 2</p>
   </div>
   <script>
   const article = document.getElementById("article");
   // găsim nodul pe care îl vom înlocui
   // să presupunem că este primul element
   const oldNode = article.firstElementChild;
   // creăm un element nou
   const newNode = document.createElement("h2");
   // definim textul pentru acesta
   newNode.textContent = "Hello World";
   // înlocuim nodul vechi cu cel nou
   article.replaceChild(newNode, oldNode);
   </script>
</body>
</html>

În acest caz, înlocuim primul element - primul paragraf, cu un titlu h2.

Ștergerea elementului

Pentru ștergerea unui element se apelează metoda removeChild() a obiectului Node. Această metodă elimină unul dintre nodurile copil:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
</head>
<body>
   <div id="article">
       <h1>Home Page</h1>
       <p>Text 1</p>
       <p>Text 2</p>
   </div>
   <script>
   const article = document.getElementById("article");
   // găsim nodul pe care îl vom șterge - ultimul paragraf
   const lastP = article.lastElementChild;
   // ștergem nodul
   article.removeChild(lastP);
   </script>
</body>
</html>

În acest caz, se șterge ultimul paragraf din blocul div.

Ștergerea tuturor elementelor

Uneori este necesar să eliminăm toate elementele. Pentru aceasta, parcurgem toate elementele containerului și le ștergem:

<div id="article">
   <h1>Home Page</h1>
   <p>Text 1</p>
   <p>Text 2</p>
</div>
<script>
const article = document.getElementById("article");
while(article.firstChild){
   article.removeChild(article.firstChild);
}
← Lecția anterioară Lecția următoare →