Выражение Javascript "document.body.getElementsByTagName ();" Vs "document.getElementsByTagName ();" - PullRequest
3 голосов
/ 19 марта 2010

Уважаемые эксперты, я новичок в javascript и часто вижу, как кодеры используют эти строки interchangeabaly.

document.body.getElementsByTagName();

и

document.getElementsByTagName();

Какая разница, преимущества?

Это как-то связано с FF и IE?

Ответы [ 4 ]

7 голосов
/ 19 марта 2010

Разница в контексте. В первом примере вы смотрите внутри тега body, что означает, что вы никогда не сможете получить сам тег body или любые другие элементы вне этого

Во втором примере примера вы можете получить что угодно.

Ничего общего с конкретными браузерами.

1 голос
/ 19 марта 2010

Первый будет сортировать только элементы тела, т.е. не заголовок, если ваш документ правильно сформирован. Вторая сортирует вас по всем элементам, которые присутствуют либо в голове, либо в теле.

0 голосов
/ 22 декабря 2010

http://jsperf.com/document-body-getelementsbytagname1 говорит, что ajm не прав, document.getElementsByTagName('*'); работает быстрее на FF!

0 голосов
/ 19 марта 2010

Как упоминалось выше, разница в контексте.

Первая строка будет искать все элементы данного имени тега, встречающиеся внутри тега body .

Вторая строка ищет все элементы данного имени тега, встречающиеся внутри всего документа.

С контекстом приходит скорость: если вы можете сделать свой поиск как можно более узким, вы найдете свои элементы быстрее и ваше приложение будет работать лучше.

Когда ваши документы станут более сложными, вы заметите что-то вроде этого:

document.getElementById('foo').getElementsByTagName('span')

начнет работать заметно быстрее, чем старый

document.getElementsByTagName('div')

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...