Получение одного элемента с помощью `getElementsByTagName` - PullRequest
1 голос
/ 21 июля 2011

Я знаю, что если мы хотим найти группу элементов, метод getElementsByTagName является для нас методом и возвращает NodeList.но если мы ищем имя тега с "body", то почему нам нужно добавить [0] после элемента ("body")?В HTML-документе есть только один тег body.

 var body = document.getElementsByTagName("body")[0];
 body.className = "unreadable";

, почему мы не можем написать этот код без индекса [0], например,

 var body = document.getElementsByTagName("body");
 body.className = "unreadable";

Если я напишу этот код, класс нечитаемыйне будет добавлено с тегом body ... почему?

Ответы [ 3 ]

9 голосов
/ 21 июля 2011

Потому что document.getElementsByTagName всегда возвращает NodeList. Если вы хотите найти более простой способ получить тело, вы можете использовать просто document.body

3 голосов
/ 21 июля 2011

getElementsByTagName возвращает NodeList.Возможно, в нем нет предметов.Это может иметь один.Это может иметь много.Вы можете увидеть, сколько в нем, протестировав его .length.

. Было бы странно, если бы он иногда возвращал NodeList, а иногда возвращал ElementNode.

2 голосов
/ 21 июля 2011

getElementsByTagName [документы] всегда возвращает NodeList.Не имеет значения, существует ли элемент с определенным тегом только один раз.

Было бы плохо, если бы функция вела себя непоследовательно.

...