АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗jsSpStGWD 43 of 294 menu
Долгожданный Бесплатный курс по выкладке сайта на хостинг. МЫ УЖЕ НАЧАЛИ! Присоединяйтесь к нам!

Получение DOM элементов без дублей

Пусть у нас есть абзацы и кнопка:

<p>aaa</p> <p>bbb</p> <p>ccc</p> <p>ddd</p> <p>eee</p> <button>click me</button>

Пусть пользователь кликает на эти абзацы в произвольном порядке. Давайте сделаем так, чтобы по нажатию на кнопку в конец каждого абзаца, на который был совершен клик, был добавлен восклицательный знак. Решим задачу через Set.

Приступим. Для начала получим наши элементы в переменные:

let button = document.querySelector('button'); let elems = document.querySelectorAll('p');

Создадим новую коллекцию Set:

let set = new Set;

Переберем абзацы циклом и повесим на них обработчик клика:

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

Давайте теперь по клику на абзац будем добавлять этот абзац в коллекцию:

for (let elem of elems) { elem.addEventListener('click', function() { set.add(this); }); }

Из-за того, что мы используем коллекцию Set повторный клик на абзац не будет приводить к добавлению дубля абзаца.

Давайте теперь по клику на кнопку переберем содержимое нашей коллекции и каждому абзацу в конец добавим восклицательный знак:

button.addEventListener('click', function() { for (let elem of set) { elem.textContent = elem.textContent + '!'; } });

Даны абзацы и кнопка. Пользователь кликает на эти абзацы в произвольном порядке. Сделайте так, чтобы по нажатию на кнопку в конец каждого абзаца, на который был совершен клик, был добавлен восклицательный знак.

enru