Învață să manipulezi DOM-ul cu Vanilla JavaScript prin exemple practice și interactive
1. Selectarea Elementelor DOM
getElementById()
const element = document.getElementById('myId');
Acest paragraf are ID-ul "demo1"
getElementsByClassName()
const elements = document.getElementsByClassName('myClass');
Element 1 cu clasa "demo-class"
Element 2 cu clasa "demo-class"
Element 3 cu clasa "demo-class"
querySelector() și querySelectorAll()
// Selectează primul element care se potrivește
const firstElement = document.querySelector('.myClass');
// Selectează toate elementele care se potrivesc
const allElements = document.querySelectorAll('.myClass');
Primul div
Al doilea div
Al treilea div
2. Modificarea Conținutului și HTML-ului
textContent vs innerHTML
element.textContent = 'Text simplu';
element.innerHTML = '<strong>Text cu HTML</strong>';
// Inserare înainte de un element
parent.insertBefore(newElement, referenceElement);
// Înlocuire element
parent.replaceChild(newElement, oldElement);
Element 1
Element de Referință
Element 3
4. Gestionarea Evenimentelor
addEventListener()
element.addEventListener('click', function(event) {
console.log('Element apăsat!', event.target);
});
// Sau cu arrow function
element.addEventListener('mouseover', (e) => {
e.target.style.background = 'yellow';
});
Interacționează cu mine! (click, hover, double-click)
Log evenimente:
Event Delegation
// În loc să adăugăm evenimente pe fiecare element
// Le adăugăm pe părinte și verificăm target-ul
parent.addEventListener('click', function(e) {
if (e.target.classList.contains('item')) {
// Procesare click pe item
}
});
// Părinți
element.parentNode
element.parentElement
// Copii
element.childNodes // include text nodes
element.children // doar elemente HTML
element.firstElementChild
element.lastElementChild
// Frați
element.nextElementSibling
element.previousElementSibling
const fragment = document.createDocumentFragment();
for (let i = 0; i < 100; i++) {
const li = document.createElement('li');
li.textContent = `Item ${i}`;
fragment.appendChild(li);
}
list.appendChild(fragment); // O singură operație DOM
IntersectionObserver pentru Lazy Loading
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
// Element vizibil
entry.target.classList.add('visible');
}
});
});
observer.observe(element);