Почему getElementsByName можно использовать только из документа в JavaScript?
Я хотел бы сделать что-то вроде этого:
var form = document.getElementsByTagName("form")[0];
var form_element_list = form.getElementsByName("foo");
Но, увы, похоже, что getElementsByName
можно запустить только из document
(см. MDN).
Вопрос:
почему поиск возможен только с уровня документа? Особенно как name
атрибуты в основном используются в формах.
Спасибо!
3 ответа
почему поиск возможен только с уровня документа?
По историческим причинам? Мы действительно не знаем. Тем не менее, имена являются глобальными идентификаторами так же, как идентификаторы в document.getElementsById
Только они не уникальны.
Тем более, что атрибуты имени в основном используются в формах.
Вы бы использовали форму .elements
Коллекция для этой цели, она также может быть адресована именами.
Вы можете просто использовать document.formName где (formName - это атрибут имени, который вы дали форме), чтобы получить форму, и document.formName.elements, чтобы получить элементы в коллекции. Затем вы можете ссылаться на входные элементы по document.formName.elements.inputID
Согласно MDN:
Каждая веб-страница, загруженная в браузер, имеет свой собственный объект документа. Интерфейс Document служит точкой входа в контент веб-страницы (дерево DOM, включая такие элементы, как и) и предоставляет глобальные функциональные возможности для документа (например, получение URL-адреса страницы и создание новых элементов в документе).
Так как он служит точкой входа, методы для поиска элементов страницы происходят из него.