Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Как из callbaсk-html взять нужные теги в JS?

#javascript


В коллбеке приходит HTML.

Заполните поле "Ф.И.О."

Заполните поле "E-Mail"

Заполните поле "Телефон"

... ... ... Нужно вырезать и сохранить в виде массива все теги с классом "errortext". Типа функции preg_match_all в PHP. Как это можно сделать в JS?


Ответы

Ответ 1



Регулярки тут не нужны. Разберите html, как html: let html = `

Заполните поле "Ф.И.О."

Заполните поле "E-Mail"

Заполните поле "Телефон"

`; let dom = document.createElement('html'); dom.innerHTML = html; let errors = Array.from(dom.querySelectorAll('.errortext')) .map(el => el.innerText); console.log(errors) Таким образом, Вы во первых, избавляетесь от сложностей разбора html, во вторых у Вас есть полноценные DOM-элементы, которые, при необходимости, можно переносить/клонировать в документ.

Ответ 2



DOMParser в помощь: const htmlStr = `

Заполните поле "Ф.И.О."

Заполните поле "E-Mail"

Заполните поле "Телефон"

`; const parsed = (new DOMParser()).parseFromString(htmlStr, 'text/html'); // <-- магия вот тут let elemArray = Array.from(parsed.querySelectorAll('.errortext')); elemArray.forEach(el => console.log(el.outerHTML));

Ответ 3



В соседних ответах могут возникнуть проблемы с невалидными фрагментами html. Например, c частями таблиц - ячейками без строк и т.п. В новых браузерах можно использовать элемент