2014-01-22 2 views
0

При использовании JavaScript мы построения запросов к DOM с помощью getElementById (или getElementsByTagName и т.д.), на более низком уровне, браузер выполняет поиск с помощью поиска в глубину (предварительно -заказ)?getElementById и поиск в глубину (предварительный заказ)

+1

Логически это имеет смысл, что ответ будет да. Тем не менее, реализация варьируется от браузера до браузера, и в конечном итоге это действительно не имеет значения, если результат соответствует спецификации. –

+1

Спецификация DOM не предусматривает конкретных алгоритмов: это просто API. И я не думаю, что имеет смысл использовать один и тот же алгоритм для поиска по идентификаторам (которые уникальны), чем по классу (который может повторяться). –

ответ

1

Не имеет значения, не так ли? Фактическая реализация не указана, интересен только результат.

getElementByIdusually optimized by a lookup table, поэтому нет никакого поиска деревьев.

document.getElementsByTagName возвращается HTMLCollection (см также document order for DOM selection method), который сортируется в "tree order":

Для дерева это предзаказ, глубины первого обхода дерева.

0

Это интересный вопрос. Это зависит от реализации, я думаю, что Хэш - это еще одна возможная структура данных, чтобы сделать это.

Есть аналогичный вопрос здесь: What is the implementation of GetElementByID()?

+0

У меня красный тот, но спасибо в любом случае :-) – ContentiousMaximus

Смежные вопросы