Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.12.2023, 14:22
Новичок на форуме
Отправить личное сообщение для ixiz Посмотреть профиль Найти все сообщения от ixiz
 
Регистрация: 19.09.2023
Сообщений: 6

Найти и удалить все теги, если в них пусто
<ul class="one-col">
<li class="one-col__item">Тут что-то есть</li>
<li class="one-col__item"></li>
</ul>

<ul class="two-cols">
<li class="two-cols__item">Тут что-то есть</li>
<li class="two-cols__item">Тут что-то есть</li>
<li class="two-cols__item"></li>
<li class="two-cols__item"></li>
<li class="two-cols__item">Тут что-то есть</li>
<li class="two-cols__item"></li>			
</ul>


Задача состоит в том, чтобы удалить все теги, в которых пусто.

Пока что у меня только получается найти пустые теги, но метод remove не срабатывает.

let tagcontent = document.getElementsByClassName('one-col__item','two-cols__item')[0].textContent;
if (tagcontent === '') {
	tagcontent.remove();
}
Ответить с цитированием
  #2 (permalink)  
Старый 12.12.2023, 14:25
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от ixiz
tagcontent === ''
В твоем случае tagcontent это строка...

Удалять нужно элемент
document.getElementsByClassName('one-col__item','two-cols__item')[0]
Ответить с цитированием
  #3 (permalink)  
Старый 12.12.2023, 14:33
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Можете скрыть пустые элементы через CSS:

.one-col__item:empty, .two-cols__item:empty {
  display: none;
}


Если нужно именно удалить элементы через JS, то можно попробовать такой вариант:

document.querySelectorAll('.one-col__item:empty, .two-cols__item:empty').forEach((element) => {
   element.remove();
});
Ответить с цитированием
  #4 (permalink)  
Старый 12.12.2023, 14:38
Новичок на форуме
Отправить личное сообщение для ixiz Посмотреть профиль Найти все сообщения от ixiz
 
Регистрация: 19.09.2023
Сообщений: 6

Сообщение от ksa Посмотреть сообщение
В твоем случае tagcontent это строка...

Удалять нужно элемент
document.getElementsByClassName('one-col__item','two-cols__item')[0]
Спасибо, буду думать дальше.
Ответить с цитированием
  #5 (permalink)  
Старый 12.12.2023, 14:39
Новичок на форуме
Отправить личное сообщение для ixiz Посмотреть профиль Найти все сообщения от ixiz
 
Регистрация: 19.09.2023
Сообщений: 6

Сообщение от ruslan_mart Посмотреть сообщение
Можете скрыть пустые элементы через CSS:

.one-col__item:empty, .two-cols__item:empty {
  display: none;
}


Если нужно именно удалить элементы через JS, то можно попробовать такой вариант:

document.querySelectorAll('.one-col__item:empty, .two-cols__item:empty').forEach((element) => {
   element.remove();
});
Надо именно из html удалить с помощью JS. К сожалению, ваш метод не сработал, из html пустые теги не удалились.

Последний раз редактировалось ixiz, 12.12.2023 в 14:41.
Ответить с цитированием
  #6 (permalink)  
Старый 12.12.2023, 16:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от ixiz
К сожалению, ваш метод не сработал, из html пустые теги не удалились.
значит теги не пустые, а с пропусками.
Ответить с цитированием
  #7 (permalink)  
Старый 12.12.2023, 16:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

ixiz,
<!DOCTYPE HTML>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
</head>
<body>
    <ul class="one-col">
        <li class="one-col__item">Тут что-то есть</li>
        <li class="one-col__item"></li>
    </ul>
    <ul class="two-cols">
        <li class="two-cols__item">Тут что-то есть</li>
        <li class="two-cols__item">Тут что-то есть</li>
        <li class="two-cols__item"></li>
        <li class="two-cols__item"></li>
        <li class="two-cols__item">Тут что-то есть</li>
        <li class="two-cols__item"></li>
    </ul>
    <script>
        document.addEventListener('DOMContentLoaded', () => {
            document.querySelectorAll('[class*="__item"]').forEach((element) => {
                element.textContent.trim() || element.remove();
            });
        })
    </script>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все блоки текста между символами и запомнить их индексы Arhitector Общие вопросы Javascript 7 20.08.2018 00:33
Как из html удалить все комментарии javascript(ом)? An1984tonn Сайт Javascript.ru 5 21.12.2016 09:29
Как удалить все обработчики события элемента FINoM Общие вопросы Javascript 10 28.12.2011 13:56
Как пометить заголовок классом если все чекбоксы ниже включены? МаринаКрутакова jQuery 8 10.10.2011 07:32
найти и удалить символ ivanweb jQuery 6 07.06.2009 22:47