@Dmasgj

Как удалить блок с таким-же textContent?

Есть такой функционал:
У меня динамический создаются блоки с текстом, и я хочу что-бы если у них название начиналось одинаково до определённого символа, последний созданный элемент удалялся со страницы.
Пример:
<div class="result_text_item">Сир Король Артур 1,4: 12 * 250 = 3000</div>
               <div class="result_text_item">Сир Мармуровий: 6 * 250 = 1500</div>
               <div class="result_text_item">Сир плавлений Дружба: 12 * 10 = 120</div>
               <div class="result_text_item">Сир Король Артур 1,4: 12 * 250 = 3000</div>

Как видите здесь у первого и последнего блока textContent начинается одинаково, я хочу создать проверку которая бы в случае создания блоков с одинаковым началом в textContent до символа ":" удаляла-бы последний созданный блок
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
lookreciuspin
@lookreciuspin
Data recovery and truth revelation hacker
Чтобы решить эту задачу, вы можете использовать следующий подход:

Создайте функцию, которая будет принимать строку и возвращать часть строки до символа ":".
Пройдитесь по всем элементам с классом "result_text_item" и сравните начало textContent текущего элемента с началом textContent всех предыдущих элементов, используя созданную функцию.
Если найдено совпадение, удалите текущий элемент.
Вот пример кода на JavaScript, который можно использовать для решения этой задачи:

// Функция для получения начала строки до символа ":"
function getStartOfText(text) {
  return text.split(":")[0];
}

// Получаем все элементы с классом "result_text_item"
let items = Array.from(document.getElementsByClassName("result_text_item"));

// Проходимся по всем элементам с конца (так как нам нужно удалять последний созданный элемент)
for (let i = items.length - 1; i >= 0; i--) {
  // Получаем начало textContent текущего элемента
  let currentItemStart = getStartOfText(items[i].textContent);
  
  // Проверяем, есть ли совпадения с началом textContent других элементов
  for (let j = 0; j < i; j++) {
    if (getStartOfText(items[j].textContent) === currentItemStart) {
      // Если найдено совпадение, удаляем текущий элемент и прерываем цикл
      items[i].remove();
      break;
    }
  }
}

Обратите внимание, что этот код удаляет все последующие элементы, которые начинаются так же, как и любой предыдущий элемент. Если вам нужно проверять только совпадения с предыдущим элементом, вы можете слегка изменить этот код.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы