Разница между объектом узла и объектом элемента?
я полностью запутался между объектом узла и объектом элемента.
document.getElementById() элемент возвращает объект, в то время как document.getElementsByClassName()
возвращает объект NodeList (коллекция элементов или узлов?)
Если div является объектом элемента, то как насчет объекта узла div?
что такое объект узла?
являются ли объект документа, объект элемента и текстовый объект также объектом узла?
согласно книге Дэвида Фланагана " объект документа, его объекты элементов и текстовые объекты все узловые объекты'.
Так как объект может наследовать свойства/методы объекта элемента, а также элемента узла?
Если да, то я предполагаю, что класс узла и класс элемента связаны в прототипном дереве наследования.
<div id="test">
<p class="para"> 123 </p>
<p class="para"> abc </p>
</div>
<p id="id_para"> next </p>
document.documentElement.toString(); // [object HTMLHtmlElement]
var div = document.getElementById("test");
div.toString(); // [object HTMLDivElement]
var p1 = document.getElementById("id_para");
p1.toString(); // [object HTMLParagraphElement]
var p2 = document.getElementsByClassName("para");
p2.toString(); //[object HTMLCollection]
5 ответов:
A
node- Это общее имя для любого типа объекта в иерархии DOM. Аnodeможет быть одним из встроенных элементов DOM, такие какdocumentилиdocument.body, это может быть HTML-тег, указанный в HTML, например<input>или<p>или это может быть текстовый узел, который создается системой для удержания блок текста внутри другого элемента. Итак, в двух словах, anode- Это любой объект DOM.An
elementэто один конкретный типnodeкак есть много других типов узлы (текстовые узлы, Узлы с комментариями, документ, узлов и т. д...).DOM состоит из иерархии узлов, где каждый узел может иметь родителя, список дочерних узлов и nextSibling и previousSibling. Эта структура образует древовидную иерархию. Элемент
documentузел будет иметь свой список дочерних узлов (headузел иbodyузел). Элементbodyузел будет иметь свой список дочерних узлов (элементы верхнего уровня на вашей HTML-странице) и так далее.Итак, a
nodeList- это просто массив, как списокnodes.элемент-это определенный тип узла, который может быть непосредственно указан в HTML с тегом HTML и может иметь такие свойства, как
idилиclass. могут иметь детей, и т. д... Существуют и другие типы узлов, такие как узлы комментариев, текстовые узлы и т. д... с различными характеристиками. Каждый узел имеет свойство.nodeTypeкоторый сообщает, какой тип узла это. Вы можете увидеть различные типы узлов (схемы от MDN):
вы можете увидеть
ELEMENT_NODEявляется одним конкретным типом узла, гдеnodeTypeсвойство имеет значение1.так
document.getElementById("test")может возвращать только один узел, и это гарантированно будет элемент (определенный тип узла). Потому что он просто возвращает элемент, а не список.С
document.getElementsByClassName("para")может возвращать более одного объекта, то дизайнеры решили вернутьnodeListпотому что это тип данных, который они создали для списка из нескольких узлов. Поскольку они могут быть только элементами (только элементы обычно имеют имя класса), это технически anodeListв нем есть только узлы элемента типа, и дизайнеры могли бы сделать коллекцию с другим именем, которая былаelementList, но они решили использовать только один тип коллекции, независимо от того, были ли в ней только элементы или нет.
EDIT: HTML5 определяет
HTMLCollection, который представляет собой список HTML Элементы (не любой узел, только элементы). Ряд свойств или методов в HTML5 теперь возвращаютHTMLCollection. Пока он очень похож по интерфейсу на AnodeList, различие теперь сделано в том, что он содержит только элементы, а не какой-либо тип узла.различие между a
nodeListиHTMLCollectionмало влияет на то, как вы его используете (насколько я могу судить), но дизайнеры HTML5 теперь сделали это различие.например,
element.childrenсобственность возвращает текущий уход.
Nodeпредназначен для реализации древовидной структуры, поэтому его методы предназначены дляfirstChild,lastChild,childNodesи т. д. Это скорее класс для общей древовидной структуры.а потом
NodeобъектыElementобъекты.Elementнаследует отNode.Elementобъекты фактически представляют объекты, указанные в HTML-файле тегами, такими как<div id="content"></div>. ЭлементElementкласс определяет свойства и методы, такие какattributes,id,innerHTML,clientWidth,blur()иfocus().некоторые
Nodeобъекты являются текстовыми узлами, а неElementобъекты. Каждый иDocumentнаследует отNodeа также:> Document.prototype.__proto__ === Node.prototype trueвот некоторые документы для узла и элемента classes:
https://developer.mozilla.org/en-US/docs/DOM/Node
https://developer.mozilla.org/en-US/docs/DOM/Element
лучший источник информации для всех ваших бед DOM
http://www.w3.org/TR/dom/#nodes
"в дереве участвуют объекты, реализующие интерфейс Document, DocumentFragment, DocumentType, Element, Text, ProcessingInstruction или Comment (просто называемые узлами)."
http://www.w3.org/TR/dom/#element
"узлы элементов просто известны как элементы."
узел:http://www.w3schools.com/js/js_htmldom_nodes.asp
объект Node представляет собой один узел в дереве документов. Узел может быть узлом элемента, узлом атрибута, текстовым узлом или любым другим типом узла, описанным в главе типы узлов.
элемент:http://www.w3schools.com/js/js_htmldom_elements.asp
объект элемента представляет элемент в XML-документе. Элементы могут содержать атрибуты, другие элементы или текст. Если элемент содержит текст, то текст представлен в текстовом узле.
дублирую :
узел используется для представления тегов в целом. Делятся на 3 типа:
атрибут Примечание: это узел, который внутри имеет атрибуты. Exp:
<p id=”123”></p>текстовый узел: это узел, который между Открытием и закрытием его имеют contian текстовое содержимое. Exp:
<p>Hello</p>узел элемента : это узел, который внутри имеет другие теги. Exp:
<p><b></b></p>каждый узел может быть одновременно, не обязательно только одного типа.
элемент просто узел элемента.

Comments