#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 частями таблиц - ячейками без строк и т.п. В новых браузерах можно использовать элемент для подобных фрагментов: function parseHTML(html, context) { var t = (context || document).createElement('template'); t.innerHTML = html; return t.content.cloneNode(true); } Для более широкой поддержки браузеров можно использовать наработки jQuery в этой области: gist @Munawwar
Комментариев нет:
Отправить комментарий