@Denis9999

Почему не работает getElementsByName в контексте HTMLElement-a?

Код такой:
var form1 = document.getElementsByName('search-person');
alert('тип' + form1[0].outerHTML);
var input1 = form1[0].getElementsByName('info[0]');
alert('тип' + input1 + ' код' + input1[0].outerHTML);

Ошибка: Uncaught TypeError: form1[0].getElementsByName is not a function

В form1[0] находится HTMLElement, почему по ему нельзя сделать поиск по тегу name, это же не NodeList?
  • Вопрос задан
  • 3930 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
The getElementsByName(name) method takes a string name, and must return a live NodeList containing all the HTML elements in that document that have a name attribute whose value is equal to the name argument (in a case-sensitive manner), in tree order.

Судя по формулировке, которая дана в спецификации, этот метод есть только у документа и его нельзя вызывать на произвольных нодах. Здесь это написано прямым текстом.

Стоит отказаться от него в пользу метода querySelector():
var form = document.querySelector('[name="search-person"]');
alert('тип' + form.outerHTML);

var input = form.querySelector('[name="info[0]"]');
alert('тип' + input + ' код' + input.outerHTML);

Как видите, возвращается сразу нода, а не коллекция, что дополнительно упрощает код.
Ответ написан
Комментировать
Распечатайте и на стенку повесьте)
9da5202f3d314f6bb171072560280c65.jpg

На основе learn.javascript.ru
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы