Поиск js элемента по HTML коду

132
01 февраля 2018, 20:02

Возникла необходимость находить элементы по коду самих элементов, пример -

<a><img src="/bitrix/templates/mobile/images/google-play-img.png" alt="">test</a>

Не смог найти ничего подобного.

Answer 1

Ну это просто. Тебе сначала надо распарсить данную строку. Так ты получишь список нод и их параметров. И тебе останется пробежаться по всем элементам документа и сравнить соответствие параметров и потомков.

Парсинг можешь заменить на создание элемента с данной html структурой. И сравнивать все ноды документа с нодами этого элемента.

Answer 2

Можно сделать так.
Ищем первый тег в строке поиска, в примере выше это a.

Далее через document.getElementsByTagName берём все теги a из документа, и сравниваем с поисковой строчкой через outerHTML.

Обновлено:
Сначала вставляем поисковый текст на страницу (куда-то в скрытое место, после работы поиска незабываем удалить элемент) и берём от него outerHTML, а потом делаем что я написал выше.
Зачем это надо? Дело в том что браузер хранит страницу в своём формате, и если у вас например лишний пробел есть, или перенос строки то алгоритм выше не сработает. Даже если в исходном файле где-то два пробела, то внутри браузера пробел будет один. Поэтому этим действием мы приводим строчку к браузерному виду, если в этом есть потребность.

READ ALSO
Декартово произведение нескольких массивов

Декартово произведение нескольких массивов

Как можно реализовать декартово произведение нескольких массивов в JavaScript?

240
JS, второй уровень вложенности массива

JS, второй уровень вложенности массива

ЗдравствуйтеУ меня затуп :)

148
Вопрос по позиционированию css/js

Вопрос по позиционированию css/js

Насколько я знаю свойство position: fixed позиционируется относительно объекта window то есть окна браузераВопрос в следующем: как можно спозиционировать...

180
Slick slider или как фиксить баг свойства centerMode?

Slick slider или как фиксить баг свойства centerMode?

Доброго времени суток! Есть некоторые баги slick-слайдера, возможно кто-то стыкался или подскажет как это обойтиКак всё обустроено: Делаю слайдер...

524