--- title: ParentNode slug: Web/API/ParentNode tags: - API - DOM - NeedsTranslation - TopicStub translation_of: Web/API/ParentNode ---
{{APIRef("DOM")}}

The ParentNode interface contains methods that are particular to {{domxref("Node")}} objects that can have children.

ParentNode is a raw interface and no object of this type can be created; it is implemented by {{domxref("Element")}}, {{domxref("Document")}}, and {{domxref("DocumentFragment")}} objects.

Properties

{{ domxref("ParentNode.children") }} {{experimental_inline}} {{readonlyInline}}
Returns a live {{domxref("HTMLCollection")}} containing all objects of type {{domxref("Element")}} that are children of this ParentNode.
{{ domxref("ParentNode.firstElementChild") }} {{experimental_inline}} {{readonlyInline}}
Returns the {{domxref("Element")}} that is the first child of this ParentNode, or null if there is none.
{{ domxref("ParentNode.lastElementChild") }} {{experimental_inline}} {{readonlyInline}}
Returns the {{domxref("Element")}} that is the last child of this ParentNode, or null if there is none.
{{ domxref("ParentNode.childElementCount") }} {{experimental_inline}} {{readonlyInline}}
Returns an unsigned long giving the amount of children that the object has.

Methods

{{ domxref("ParentNode.append()") }} {{experimental_inline}}
Inserts a set of {{domxref("Node")}} objects or {{domxref("DOMString")}} objects after the last child of the ParentNode. {{domxref("DOMString")}} objects are inserted as equivalent {{domxref("Text")}} nodes.
{{ domxref("ParentNode.prepend()") }} {{experimental_inline}}
Inserts a set of {{domxref("Node")}} objects or {{domxref("DOMString")}} objects before the first child of the ParentNode. {{domxref("DOMString")}} objects are inserted as equivalent {{domxref("Text")}} nodes.

Specification

Specification Status Comment
{{SpecName('DOM WHATWG', '#dom-parentnode-firstelementchild', 'ParentNode.firstElementChild')}} {{Spec2('DOM WHATWG')}} Splitted the ElementTraversal interface in {{domxref("ChildNode")}} and ParentNode. The firstElementChild, lastElementChild, and childElementCount properties are now defined on the latter.
The {{domxref("Document")}} and {{domxref("DocumentFragment")}} implemented the new interfaces.
Added the children property.
Added the append() and prepend() methods.
{{SpecName('Element Traversal', '#interface-elementTraversal', 'ElementTraversal')}} {{Spec2('Element Traversal')}} Added the initial definition of its properties to the ElementTraversal pure interface and use it on {{domxref("Element")}}.

Browser compatibility

{{CompatibilityTable}}

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (on {{domxref("Element")}}) {{CompatChrome(1.0)}} {{CompatGeckoDesktop("1.9.1")}} 9.0 [1] 10.0 4.0
Support on {{domxref("Document")}} and {{domxref("DocumentFragment")}} {{experimental_inline}} {{CompatChrome(29.0)}} {{CompatGeckoDesktop(25)}} {{CompatNo}} 16.0 {{CompatNo}}
append() and prepend() {{experimental_inline}} {{CompatChrome(54.0)}} {{CompatGeckoDesktop(49)}} {{CompatVersionUnknown}} {{CompatOpera(39)}} {{CompatNo}}
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Mobile
Basic support (on {{domxref("Element")}}) {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatGeckoMobile("1.9.1")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Support on {{domxref("Document")}} and {{domxref("DocumentFragment")}} {{experimental_inline}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatGeckoMobile(25)}} {{CompatNo}} 16.0 {{CompatNo}} {{CompatVersionUnknown}}
append() and prepend() {{experimental_inline}} {{CompatNo}} {{CompatChrome(54.0)}} {{CompatGeckoMobile(49)}} {{CompatNo}} {{CompatOperaMobile(39)}} {{CompatNo}} {{CompatChrome(54.0)}}

[1] Internet Explorer 6, 7 and 8 supported it, but erroneously returns {{domxref("Comment")}} nodes as part of the results.

See also