Ćwiczenie · Informatyka Ćwiczenie: Interaktywna wyszukiwarka produktów na żywo

Interaktywna wyszukiwarka produktów na żywo

Treść zadania

W sklepie mamy tablicę artykułów biurowych:
const artykuly = [
  { nazwa: "Długopis niebieski" },
  { nazwa: "Ołówek grafitowy" },
  { nazwa: "Długopis czarny" }
];

W dokumencie przygotowano pole wyszukiwania <input type="text" id="poleSzukaj"> oraz listę <ul id="wynikiWyszukiwania"></ul>.
Na zdarzenie input pola wyszukiwania:
1. Wyczyść listę #wynikiWyszukiwania.innerHTML = ''.
2. Pobierz wpisaną frazę w małych literach za pomocą toLowerCase().trim().
3. Przefiltruj tablicę wybierając elementy, których nazwa zawiera szukaną frazę (artykul.nazwa.toLowerCase().includes(fraza)).
4. Dla każdego pasującego elementu utwórz <li> z nazwą i dołącz do listy.

Co będzie oceniane

  • Nasłuchiwanie zdarzenia input na #poleSzukaj.
  • Filtrowanie z użyciem toLowerCase() i includes().
  • Wygenerowanie odpowiednich elementów li w #wynikiWyszukiwania.
  • Kod uruchamia się bez błędu i przechodzi wszystkie testy automatyczne.

Testy automatyczne (2)

  1. Wpisanie frazy 'długopis' wyświetla 2 trafienia — licznik #wynikiWyszukiwania li = 2; tekst #wynikiWyszukiwania li:first-child = Długopis niebieski
  2. Wpisanie frazy 'ołówek' wyświetla 1 trafienie — licznik #wynikiWyszukiwania li = 1; tekst #wynikiWyszukiwania li:first-child = Ołówek grafitowy

Zaliczenie: wszystkie testy muszą przejść. Testy uruchamia się przyciskiem „Sprawdź testy” pod kodem.

const artykuly = [
  { nazwa: "Długopis niebieski" },
  { nazwa: "Ołówek grafitowy" },
  { nazwa: "Długopis czarny" }
];

// Filtruj artykuły na bieżąco w zdarzeniu input i generuj li w #wynikiWyszukiwania

Wskazówki

Wskazówka 1

Metoda includes sprawdza, czy dany fragment tekstu znajduje się wewnątrz dłuższego łańcucha znaków.

Wskazówka 2

Podepnij funkcję pod zdarzenie input pola tekstowego, wyczyść listę wyników, przefiltruj tablicę metodą filter z wykorzystaniem toLowerCase oraz includes, a pasujące wyniki dodaj jako nowe elementy li do listy.