@Stop_Loll
Дизайнер

Как удалить Head после получения Html?

Как удалить или заменить на пустую строку все элементы входящие в тег через обычный JS, код который я использую для парсинга страницы, вытаскивает кроме коллекций, еще и , но без тега, тег удаляется.

document.addEventListener('DOMContentLoaded', function LoadComments() {
(function LoadComments() {
var CommentsSite = new XMLHttpRequest();
CommentsSite.open("GET","/comments.lm?com="+location.pathname+"", true);
CommentsSite.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
    	var api = new DOMParser().parseFromString(this.responseText, "text/html");

		api = CommentsSite.responseText;

Использую следующую конструкцию:
new__word = '';
		api = api.replace('<div class="top">Комментарии</div>', new__word);
		api = api.replace(/<head>/ims, " ");


      document.getElementById('site__comments').innerHTML = api;

Но удалить не получается, все теги, что находились, в нём остаются.
  • Вопрос задан
  • 319 просмотров
Решения вопроса 1
XanXanXan
@XanXanXan
var api = new DOMParser().parseFromString(this.responseText, "text/html");
api = CommentsSite.responseText;

Зачем парсить DOM из строки, а потом его назад загонять в строку? Когда есть DOM, можно искать/удалять элементы через querySelector(), remove() и т.д.

А если удалять из строки подстроку, то тогда уже через регулярки.

Хотя подход с удалением явно некорректный, если нужно просто выдернуть все комментарии.
spoiler
async function getComments() {  
  const response = await fetch(`/comments.lm?com="${location.pathname}`);
  const commentsRawString = await response.text();
  const commentsParsedPage = new DOMParser().parseFromString(commentsRawString, "text/html");

  const comments = Array.from(commentsParsedPage.querySelectorAll(/*селектор для поиска комментариев*/), comment => comment.textContent);

  return comments;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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