@Shimpanze

JavaScript: как был этот код написали профессионалы?

Добрый день!

Написал сниппет, который заменяет параграфы с тремя звездочками (типа разделители), на элемент <hr>.

Как бы этот код написали профессионалы?

// ищем все парараграфы
document.querySelectorAll('.entry-content p').forEach(function(entry) {
  // проверяем, подходит ли содержимое текущего параграфа в цикле
  // под наше условие (содержит ли только звездочки)
  if (entry.innerHTML == entry.innerHTML.match(/[\s]*\*[\s]*\*[\s]*\*[\s]*[\s]*/gi)) {
    // если да, вставляем после него элемент <hr>
    entry.insertAdjacentHTML('afterEnd', '<hr>');
    // и удаляем родительский элемент параграфа (как сделать умнее не придумал...)
    entry.closest("p").remove();
  }
});


Спасибо!
  • Вопрос задан
  • 100 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Я не про, сделал бы так:

function replaceStars(collection) {
  var i, el, re = /^(\s*\*\s*){3}$/;
  for(i = 0; i<collection.length; i++) {
    el = collection[i];
    if( el.innerHTML.match(re)) {
      el.insertAdjacentHTML('afterend', '<hr>');
      el.parentNode.removeChild(el);
    }
  }
}

replaceStars(document.querySelectorAll('.entry-content p'));
Ответ написан
Комментировать
@xtabay
Тот же верхний пример, только, немного более лаконично, на мой взгляд.
function replaceStars(collection) {
  const re = /^(\s*\*\s*){3}$/;

	collection.forEach((elem) => {
    if(elem.innerHTML.match(re)) {
      elem.insertAdjacentHTML('afterend', '<hr>');
      elem.parentNode.removeChild(elem);
    }
  });
}

replaceStars(document.querySelectorAll('.entry-content p'));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
23 апр. 2024, в 19:05
15000 руб./за проект
23 апр. 2024, в 19:01
7000 руб./за проект
23 апр. 2024, в 18:47
10000 руб./за проект