Страницы

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

четверг, 2 апреля 2020 г.

Возможно ли ограничение зоны поиска DOM?

#javascript

                    
Можно ли, например, для метода getElementById, сократить область поиска со всей страницы
до какой-либо отдельной части HTML-документа? В примере

можно конечно, сначала найти container, а потом внутри него уже искать element, но container-то мы ищём опять же по всему документу, а это нерационально в больших документах. Можно ли как-то ограничить зону поиска?


Ответы

Ответ 1



Что-то мне подсказывает, что при построении дерева все ссылки на элементы ID собираю в одном месте и потом используются для быстрого поиска по дереву. Поэтому то, что вы хотите оптимизировать и так уже оптимизировано. Но не буду этого утверждать. В общем как один из вариантов, можно натыкать меток и ограничивать ими, если уж так хочется. По крайней мере они точно собраны в одном месте и до них легко добраться. console.log( document.anchors["part_2"].innerText )

Ответ 2



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

Ответ 3



Можно. Это имеет смысл для поиска например по имени тега, классу или более сложному селектору. Но для поиска по id это смысла не имеет, так как все id хранятся в хэш таблице и поиск по ней происходит очень быстро (за константное время операций), и там уже нечего ускорять. var area = document.getElementById("searchArea"); var els = area.getElementsByTagName("p"); /* можно и по id поискать, но скорее всего это будет медленнее чем поиском через document.getElementById */ var el1 = area.querySelector("#id1"); console.log(Array.from(els)); console.log(el1);

some text

11

22

some text



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

Отправить комментарий