Mesuti
@Mesuti

Как при клике по однотипным элементам делать их текстовое содержимое значением input'а?

Есть массив ссылок с одним классом и одно поле input:

<a href="#" class="link">Инфо1</a>
<a href="#" class="link">Инфо2</a>
<a href="#" class="link">Инфо3</a>
<a href="#" class="link">Инфо4</a>
<a href="#" class="link">Инфо5</a>

<input type="text" id="textLink" value="">

Как при клике на ссылку перенести ее текст внутрь input? На чистом js и максимально кратко.
  • Вопрос задан
  • 742 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const input = document.querySelector('#textLink');
const buttonSelector = '.link';

Делегирование, назначаем обработчик клика один раз:

document.addEventListener('click', e => {
  const button = e.target.closest(buttonSelector);
  if (button) {
    input.value = button.innerText;
  }
});

Или, назначаем обработчик клика каждому элементу индивидуально:

document.querySelectorAll(buttonSelector).forEach(function(n) {
  n.addEventListener('click', this);
}, e => input.value = e.currentTarget.textContent);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@unsxxndxrk
var links = document.getElementsByClassName('link');
var input = document.getElementById('textLink);

for (var i = 0; i < links.length; i++) {
links[i].addEventListener('click', funct);
}

function funct() {
input.value = this.getAttribute('href); //запишет текст из href
input.value = this.innerHTML; //запишет текст из а (Инфо1, 2...)
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы