Как применить кнопку в блоке к элементу в этом блоке ,когда таких блоков множество?

Нужно что бы по кнопке копи - копировалось значение href.HELP ME PLEASE

<div>
      <a class="link" href="3">sometxt1</a>
      <button class="btn">copy</button>
    </div>
    <div>
      <a class="link" href="2">sometxt2</a>
      <button class="btn">copy</button>
    </div>
    <div>
      <a class="link" href="1">sometxt3</a>
      <button class="btn">copy</button>
    </div>

<script>
var copyEmailBtns = document.querySelectorAll("button.btn"); // Получаем все элементы с классом
var emailLinks = document.querySelectorAll("a.link"); // Получаем все элементы с классом

for (let i = 0; i < copyEmailBtns.length; i++) {
  // Для каждого значения
  copyEmailBtns[i].addEventListener("click", function() {
    // К copyEmailBtns добавляем индекс [i]
    var range = document.createRange();
    range.selectNode(emailLinks[i]); // Добавляем индекс [i]
    window.getSelection().addRange(range);

    try {
      // Теперь, когда мы выбрали текст ссылки, выполним команду копирования
      var successful = document.execCommand("copy");
      var msg = successful ? "successful" : "unsuccessful";
      console.log("Copy email command was " + msg);
    } catch (err) {
      console.log("Oops, unable to copy");
    }

    // Снятие выделения - ВНИМАНИЕ: вы должны использовать
    // removeRange(range) когда это возможно
    window.getSelection().removeAllRanges();
    console.log();
  });
}

</script>

Ответы (1 шт):

Автор решения: Константин

Могу предложить пластичное решение с использованием библиотеки jquery:

var link;
    $('.btn').click(function(){ //вешаем событие клика на класс .btn
    link = $(this).siblings('a').attr('href'); //берем соседа типа "а" у кликнутой кнопки и в переменную link записываем содержимое атрибута href.
    });
→ Ссылка