Как скопировать текст элемента в его data-атрибут?

На сайте есть несколько элементов с классом js-data-content. Нужно придумать скрипт, который будет в каждом таком элементе брать его текстовый контент и вставлять его в атрибут data-content.

Например из:

<a class="js-data-content" href="#">Текст</a>
<p class="js-data-content">Lorem ipsum</p>

Сделать:

<a class="js-data-content" href="#" data-content="Текст">Текст</a>
<p class="js-data-content" data-content="Lorem ipsum">Lorem ipsum</p>

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

Автор решения: EzioMercer

Можно так:

  1. Выбираем все элементы с классом js-data-content с помощью querySelectorAll

  2. Проходимся по всем элементам с помощью forEach

  3. Достаём именно текстовое содержимое с помощью textContent

  4. С помощью setAttribute устанавливаем значение аттрибуту data-content

document
  .querySelectorAll('.js-data-content')
  .forEach(element => {
    element.setAttribute('data-content', element.textContent);
  })
<a class="js-data-content" href="#">Текст</a>
<p class="js-data-content">Lorem ipsum</p>

→ Ссылка