Задать вопрос
@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 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 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'));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽