Tworzenie węzłów przez createElement, dołączanie za pomocą appendChild, generowanie struktur w pętli, czyszczenie innerHTML oraz metoda remove().
Dynamiczne rozbudowywanie strony o nowe pozycje (np. dodawanie wpisów na forum, kolejnych zadań czy produktów) opiera się na tworzeniu węzłów DOM za pomocą metody document.createElement(nazwaZnacznika) .
function dodajNowyWpis() {
const pole = document.getElementById('trescWpisu');
const tekst = pole.value.trim();
if (tekst === '') {
alert('Wpis nie może być pusty!');
return;
}
const lista = document.getElementById('listaWiadomosci');
const nowyWpis = document.createElement('li');
nowyWpis.textContent = tekst;
lista.appendChild(nowyWpis);
pole.value = '';
}
function dodajNowyWpis() {
const pole = document.getElementById('trescWpisu');
const tekst = pole.value.trim();
if (tekst === '') {
alert('Wpis nie może być pusty!');
return;
}
const lista = document.getElementById('listaWiadomosci');
const nowyWpis = document.createElement('li');
nowyWpis.textContent = tekst;
lista.appendChild(nowyWpis);
pole.value = '';
}
Która metoda służy do utworzenia nowego węzła elementu w pamięci przeglądarki?
Poprawna: b) Metoda document.createElement() tworzy nowy obiekt elementu DOM o podanym typie znacznika.
Przy budowaniu katalogów produktów, cenników czy tabel z danymi najczęściej powtarzamy operację tworzenia elementów w pętli (np. metodą tablica.forEach() ).
const uslugi = [
{ nazwa: 'Instalacja systemu', cena: 80 },
{ nazwa: 'Czyszczenie układu', cena: 120 },
{ nazwa: 'Odzyskiwanie danych', cena: 250 }
];
function generujKartyUslug() {
const kontener = document.getElementById('kontenerUslug');
kontener.innerHTML = '';
uslugi.forEach(function(u) {
const karta = document.createElement('div');
karta.className = 'karta-uslugi';
const tytul = document.createElement('h4');
tytul.textContent = u.nazwa;
const cena = document.createElement('p');
cena.className = 'cena';
cena.textContent = u.cena + ' zł';
karta.appendChild(tytul);
karta.appendChild(cena);
kontener.appendChild(karta);
});
}
function wyczyscKatalog() {
document.getElementById('kontenerUslug').innerHTML = '';
}
const uslugi = [
{ nazwa: 'Instalacja systemu', cena: 80 },
{ nazwa: 'Czyszczenie układu', cena: 120 },
{ nazwa: 'Odzyskiwanie danych', cena: 250 }
];
function generujKartyUslug() {
const kontener = document.getElementById('kontenerUslug');
kontener.innerHTML = '';
uslugi.forEach(function(u) {
const karta = document.createElement('div');
karta.className = 'karta-uslugi';
const tytul = document.createElement('h4');
tytul.textContent = u.nazwa;
const cena = document.createElement('p');
cena.className = 'cena';
cena.textContent = u.cena + ' zł';
karta.appendChild(tytul);
karta.appendChild(cena);
kontener.appendChild(karta);
});
}
function wyczyscKatalog() {
document.getElementById('kontenerUslug').innerHTML = '';
}
W jaki sposób najszybciej usunąć całą dotychczasową zawartość kontenera przed ponownym wygenerowaniem elementów?
Poprawna: d) Przypisanie pustego łańcucha do właściwości innerHTML natychmiast czyści całą zawartość potomną elementu.
Usuwanie elementów jest nieodzownym elementem interfejsów takich jak koszyki zakupowe czy listy zadań. Nowoczesny standard DOM udostępnia prostą metodę element.remove() , którą wywołujemy bezpośrednio na węźle, który ma zniknąć ze strony.
function usunPozycje(przycisk) {
const elementLi = przycisk.parentElement;
elementLi.remove();
const pozostalo = document.querySelectorAll('#listaKoszyka li').length;
const licznik = document.getElementById('licznikKoszyka');
licznik.textContent = 'Pozycji w koszyku: ' + pozostalo;
}
function usunPozycje(przycisk) {
const elementLi = przycisk.parentElement;
elementLi.remove();
const pozostalo = document.querySelectorAll('#listaKoszyka li').length;
const licznik = document.getElementById('licznikKoszyka');
licznik.textContent = 'Pozycji w koszyku: ' + pozostalo;
}
Która nowoczesna metoda pozwala na bezpośrednie usunięcie elementu węzła ze strony?
Poprawna: c) Metoda remove() usuwa węzeł bezpośrednio z drzewa dokumentu DOM.