Найти класс HTML и удалить его на основе текста?

#javascript #html

#javascript #HTML

Вопрос:

РЕДАКТИРОВАТЬ: я подумал, что добавлю здесь вверху, что причина, по которой я это делаю, заключается в том, что фильтр для Reddit Enhancement Suite у меня не работает, и мне в любом случае не нужны все остальные его функции.

Я пытаюсь создать расширение для браузера для моего личного использования, которое фильтрует субредакты на reddit, которые я не хочу видеть. Я довольно долго гуглил и дошел до того, что могу удалить post с идентификатором div следующим образом:

 var element = document.querySelector("div.divid");
element.parentElement.removeChild(element);
  

Таким образом, это работает для удаления сообщения, однако каждый идентификатор div уникален для каждого сообщения. Следовательно, это не работает для непрерывного удаления сообщений из определенного субредакта.

Просматривая html страницы, если я покопаюсь внутри div, который инкапсулирует post, я смогу найти:

 <a class="class_name" data-click-id="subreddit" href="/r/subredditname/">r/subredditname</a>
  

Я пытался посмотреть, могу ли я удалить по имени класса? Опять же, имя класса уникально для каждого поста. Итак, что мне интересно, поскольку я, кажется, не могу найти правильную формулировку для поиска ответа, могу ли я использовать приведенный выше код для выполнения:

 var element = document.querySelectorAll("r/subredditname");
element.parentElement.removeChild(element);
  

или что-то в этом роде, чтобы удалить весь пост, основываясь исключительно на тексте внутри класса, который отображает имя субредакта внутри поста?

Комментарии:

1. Вы можете взглянуть на селекторы атрибутов; developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors (вы также можете запрашивать классы, но ваш пример — href, поэтому выбор атрибута имеет больше смысла)

2. Спасибо за ответ! Я пробовал: document. querySelector(«a[href *=’/r/subredditname /’]»); но, похоже, это ничего не делает. Я неправильно понимаю атрибуты?

Ответ №1:

Хорошо, я понял это! Благодаря комментарию Рене я исправил его, чтобы быть:

 var element = document.querySelector("a[href*='/r/subredditname/']");
element.parentElement.parentElement.parentElement.remove();
  

Это работает в основном для удаления всего сообщения. Это оставляет после себя небольшую строку, но это работает. Мне придется его пересмотреть, потому что рассылка спама parentElement не кажется самым привлекательным решением, но спасибо!