Здравствуйте!
Подскажите, пожалуйста, как используя getElementById получить NodeList? По умолчанию, возвращается HTML с дочерними элементами. например
HTML:
<div id="text">
<p>text</p>
</div>
JS:
el = document.getElementById('text');
console.log(el)
Однако, если использовать jQuery console.log($(el)) - то получается NodeList. Подскажите, пожалуйста, как добиться такого же результата на классическом JavaScript.
Спасибо!
Говоря, что document.getElementById возвращает HTML - вы ошибаетесь. Этот метод возвращает экземпляр класса Element.
Убедится в этом довольно просто. Вот такой код:
var el = document.getElementById('text');
console.log(el instanceof Element);
выведет в консоль true (пруф).
Что же касается NodeList, то document.getElementById ни в коем случае не должен возвращать экземпляр этого класса, поскольку, согласно стандарту, аттрибут id должен быть уникален в пределах документа.
Поведение jQuery здесь можно объяснить соображениями единообразия: оборачивая какой-либо элемент (Element) вы получаете коллекцию узлов, содержащую ровно один элемент.
Если вам все же нужен экземпляр NodeList, при этом вы не хотите использовать jQuery, то можно воспользоваться методом document.querySelectorAll:
var el = document.querySelectorAll('#text');
console.log(el instanceof NodeList);
Рабочий пример на JSFiddle.
Попробуйте метод document.querySelectorAll.Пример:
List = document.querySelectorAll("selector");
Продвижение своими сайтами как стратегия роста и независимости