Задать вопрос
@xaruki

Как обернуть центральные слова из html тегов в span?

На динамическом сайте выводятся заголовки h5 c классом heading.
<h5 class="heading">Противоположная точка зрения подразумевает, что многие известные</h5>
<h5 class="heading">Как принято считать, элементы политического процесса объявлены нарушающими</h5>

Нужно пройтись по всем этим заголовкам и 3-4 центральных слова обернуть в тег span.
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Где, во что и сколько слов надо обернуть:

const className = 'heading';
const wrapperTag = 'span';
const wrapCount = 3;

Оборачиваем:

document.querySelectorAll(`.${className}`).forEach(n => {
  const words = n.innerText.split(' ');
  const iMin = Math.max(0, Math.floor((words.length - wrapCount) / 2));
  const iMax = Math.min(words.length - 1, iMin + wrapCount - 1);

  words[iMin] = `<${wrapperTag}>${words[iMin]}`;
  words[iMax] = `${words[iMax]}</${wrapperTag}>`;

  n.innerHTML = words.join(' ');
});

или

for (const n of document.getElementsByClassName(className)) {
  const words = n.textContent.split(/(?= )/);
  const wrapper = document.createElement(wrapperTag);

  wrapper.textContent = words
    .splice(Math.max(0, (words.length - wrapCount) >> 1), wrapCount, wrapper)
    .join('');

  n.replaceChildren(...words);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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