@mityaer

В чем разница между HTMLCollection, возвращаемой getElementsByTagName и getElementsByClassName?

Почему eventListener работает только на варианте №0 ? (код ниже)
Почему в варианте №1 length = 1, а во втором length = 0, если там же в консоли мы видим, что это одинаковые HTMLCollection?
Описания на TagName и на ClassName одинаковы, перечитал уже и MDN, и Кантора, и w3c:
"The NodeList object represents a collection of nodes. The nodes can be accessed by index numbers. The index starts at 0."
Так почему же они возвращают разные вещи?

Ищу текст тремя способами:
var paragraph0 = document.querySelectorAll("p");
var paragraph1 = document.getElementsByTagName("p");
var paragraph2 = document.getElementsByClassName("p");


И вижу в консоли:
e1e388cb2ec34a2b8a3b75186bc3c745.png
  • Вопрос задан
  • 1844 просмотра
Решения вопроса 1
nazarpc
@nazarpc
Open Source enthusiast
Почитайте что такое тэг, класс и селектор. После этого станет понятно на сколько ваш вопрос простой, и на сколько долго нужно разжевывать почему вы получаете РАЗНЫЕ коллекции.
По поводу сообщений в консоли рекомендую почитать про приведение типов в JavaScript, в частности, как объекты конвертируются в строки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
HTMLCollection - это динамическая коллекция, при изменениях в DOM дереве, с которым она связана, изменится и содержимое коллекции
NodeList статичный и содержит только те элементы, которые присутствовали в дереве на момент запроса
Ответ написан
werty1001
@werty1001
undefined
// По тегу, найдет все <p>....</p>
var paragraph1 = document.getElementsByTagName("p");

// По классу, найдет все <div сlass="p">....</div> (тег может быть любой)
var paragraph2 = document.getElementsByClassName("p");
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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