Použití kolekcí Map

Předpokládejme, že máme odstavce:

html<p>aaa</p>
<p>bbb</p>
<p>ccc</p>
<p>ddd</p>
<p>eee</p>

Udělejme to, aby po kliknutí na každý odstavec se na jeho konec zapsalo jeho pořadové číslo v seznamu odstavců. Úlohu vyřešíme pomocí Map.

Pojďme na to. Nejprve získejme naše odstavce do proměnné:

javascriptlet elems = document.querySelectorAll('p');

Vytvořme novou kolekci Map:

javascriptlet map = new Map;

Vyplňme naši kolekci tak, aby klíči byly naše odstavce a jejich hodnotami - pořadová čísla:

javascriptlet i = 1;
for (let elem of elems) {
  map.set(elem, i++);
}

Projděme odstavce cyklem a přidejme jim obslužnou rutinu kliknutí:

javascriptfor (let elem of elems) {
  elem.addEventListener('click', function() {
    
  });
}

Nyní po kliknutí přidejme pořadové číslo na konec textu odstavce. Přitom budeme získávat toto číslo z naší kolekce:

javascriptfor (let elem of elems) {
  elem.addEventListener('click', function() {
    this.textContent += map.get(this);
  });
}
Задание 1

Jsou dány inputy. Projděte tyto inputy cyklem a vytvořte kolekci Map, jejíž klíči budou inputy a hodnotou - jejich pořadové číslo na stránce. Zařiďte, aby po kliknutí na jakýkoli input se mu do value zapsalo jeho pořadové číslo.

Задание 2

Jsou dány inputy. Do každého inputu lze zadat číslo. Nechť po stisknutí Enter input zapamatuje zadané číslo. Zařiďte, aby po ztrátě fokusu v inputu se do konzole vypisovalo pole všech dříve zadaných čísel.