Получить элемент по имени тега сокращение? - PullRequest
4 голосов
/ 24 апреля 2011

Я не знаю, как это называется, но я знаю, что есть способ получить элементы на основе их тегов без getElementsByTagName. Он возвращает то же самое, но он короче, и я часто использую теги в своем проекте. Я говорю о document.frames[x] и document.images[x], но с другими элементами, такими как document.b[x] или document.a[x]. То, что document.images не совпадает с тегом <img>, похоже, что если их будет больше, их тоже будут называть по-другому. Кто-нибудь случайно узнает, как он называется при использовании этого метода, и / или имеет список принятых тегов? Спасибо.

P.S. Пожалуйста, не предлагайте использовать такую ​​библиотеку, как jQuery. Этот проект предназначен для обучения, поэтому я хочу использовать обычный JavaScript.

Ответы [ 3 ]

6 голосов
/ 24 апреля 2011

Как уже упоминалось в ответах, это не имеет никакого отношения к JavaScript, это свойства и методы DOM, доступные через привязку языка JavaScript для DOM .

Что касается элементов адресации, таких как document.frames[x] (, обратите внимание, что это неверно, это должны быть window.frames[x]) и document.images[x] - это Объект документа / HTMLКоллекции и стандарт W3C включают только images, applets, links, forms и anchors.

Так что, если я не смотрю в совершенно неверное место, то, что я могу сказать из DOM-1 *В спецификациях 1019 * и DOM-2 не существует способа произвольной адресации элементов по имени тега так, как вы помните.

Обновление

Запись MDC на HTMLCollection более понятна;он читает

Ниже перечислены все элементы (и их специфические свойства), которые возвращают HTMLCollection: Document (изображения, апплеты, ссылки, формы, якоря);форма (элементы);карта (районы);таблица (строки, тела);tableSection (строки);строка (ячейки)

5 голосов
/ 24 апреля 2011

Кроме других библиотек JavaScript, создающих эти сокращения, я не знаю ни одной, встроенной в язык.Было бы тривиально сопоставить это с вашими собственными сокращениями:

var $ = document.getElementsByTagName;

// you can then use it like so:
$('SPAN').// and so on

Кроме этого, нет встроенного доступа в виде массива ко всем тегам в документе:

http://www.javascriptkit.com/jsref/document.shtml

2 голосов
/ 24 апреля 2011

Создайте собственную ссылку,

document.tag = document.getElementsByTagName;

или обертка,

function tag(name) {
    return document.getElementsByTagName(name);
}

Единственные известные мне API-интерфейсы, которые поддерживают запросы по имени элемента, это

DOM

getElementsByTagName

Селекторы CSS

querySelectorAll

* 1026 XPath *

оценка

E4X

(только Mozilla, и пока не работает с DOM)

...