Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.11.2020, 16:14
Аватар для finlolo
Аспирант
Отправить личное сообщение для finlolo Посмотреть профиль Найти все сообщения от finlolo
 
Регистрация: 12.08.2018
Сообщений: 61

Удаление повторяющихся тегов
Привет.

у меня постятся записи. В них есть лишняя последовательность <div><br><br></div>. То есть получаются лишние переносы в начале и в конце. Либо много в середине.

как удалить их, учитывая, что в начале и в конце строки их нужно удалить все, а в середине, если имеются, только 1.

Пример:

<div><br><br></div>
<div><br><br></div>
<div> Привет, сегодня воскресенье <br> Как ваши дела?</div>
<div><br><br></div>
<div><br><br></div>
Ответить с цитированием
  #2 (permalink)  
Старый 03.11.2020, 16:15
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Почему не сделать это вручную один раз?
Ответить с цитированием
  #3 (permalink)  
Старый 03.11.2020, 16:16
Аватар для finlolo
Аспирант
Отправить личное сообщение для finlolo Посмотреть профиль Найти все сообщения от finlolo
 
Регистрация: 12.08.2018
Сообщений: 61

В смысле
Ответить с цитированием
  #4 (permalink)  
Старый 03.11.2020, 16:19
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от finlolo
В смысле
В прямом.
Это же не какая-то последовательность букв и цифр появляющаяся волшебным образом, а либо шаблон, который используется для построения страницы, либо контент страницы, который хранится в файле/бд, либо какой-то файлик, хранящийся на сервере.

Исправьте текст вручную и не придется лепить костыли, чтобы избавиться от мусора в верстке.
Ответить с цитированием
  #5 (permalink)  
Старый 03.11.2020, 16:23
Аватар для finlolo
Аспирант
Отправить личное сообщение для finlolo Посмотреть профиль Найти все сообщения от finlolo
 
Регистрация: 12.08.2018
Сообщений: 61

-Nexus,
-
Ответить с цитированием
  #6 (permalink)  
Старый 03.11.2020, 17:42
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Работает только в вашем примере. Если br вынести на отдельную строку, работать перестанет, т.к. br каким-то образом превратиться в text node.

<div><br><br></div>
<div><br><br></div>
<div> Привет, сегодня воскресенье <br><br> Как ваши дела?</div>
<div><br><br></div>
<div><br><br></div>

<style>div {background: gray}</style>

<script>
    document.querySelectorAll('* > br').forEach(br => {
        const container = br.parentNode;
        const children = container ? [].slice.call(container.childNodes) : [];
        if (!children.length) {
            return;
        }

        const isBreak = el => (typeof el === 'object') && (el instanceof HTMLBRElement);

        let prevElement = null;
        children.forEach((child, index) => {
            if (!isBreak(child)) {
                const isString = child.nodeType === Node.TEXT_NODE;
                const isElement = !isString && child.nodeType === Node.ELEMENT_NODE;
                if (isElement || isString && child.textContent.length) {
                    prevElement = child;
                }

                return;
            }

            if (prevElement) {
                prevElement = null;

                return;
            }

            if (!prevElement || isBreak(prevElement)) {
                container.removeChild(child);
            }
        });

        if (prevElement && isBreak(prevElement)) {
            container.removeChild(child);
        }
    });
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление больше одного повторяющихся элементов массива Katy93 Общие вопросы Javascript 0 23.02.2019 10:25
Создание облака тегов на JS DmitryBelg Общие вопросы Javascript 13 06.11.2018 16:03
Greasemonkey: удаление всех тегов <b> estenha Firefox/Mozilla 1 19.05.2016 20:07
Удаление повторяющихся имейлов из строки Esigns Общие вопросы Javascript 7 21.02.2013 12:29
Удаление HTML тегов в тексте GiveMeABreak Javascript под браузер 0 21.10.2009 19:25