--- title: Node slug: Web/API/Node tags: - API - DOM - Element - Interface - Node - WebAPI translation_of: Web/API/Node ---
{{Apiref}}

Node é uma interface da qual uma varidade de tipos do DOM herdam e permite que estes vários tipos seja tratados (ou testados) de forma similar.

As seguintes interfaces todas herdam de Node os seus métodos e propriedades:{{domxref("Document")}}, {{domxref("Element")}}, {{domxref("CharacterData")}} (que {{domxref("Text")}}, {{domxref("Comment")}}, e {{domxref("CDATASection")}} herdam), {{domxref("ProcessingInstruction")}}, {{domxref("DocumentFragment")}}, {{domxref("DocumentType")}}, {{domxref("Notation")}}, {{domxref("Entity")}}, {{domxref("EntityReference")}}

Estas interfaces podem retornar null em casos particulares, em que estes métodos e propriedades não são relevantes. Podem lançar uma excepção - por exempo, ao adicionar nós-filho a um tipo de nó para o qual não está prevista a existência de nós descendentes.

 

Propriedades

Herda propriedades do seu pai {{domxref("EventTarget")}}.[1]

{{domxref("Node.attributes")}} {{deprecated_inline}}
...
{{domxref("Node.baseURI")}} {{readonlyInline}}
Retorna uma {{domxref("DOMString")}} que represente o URL base. O conceito de URL base varia de língua para língua; em HTML corresponde: ao protocolo, nome do domínio e estrutura de directórios, ou seja, tudo até à última '/'.
{{domxref("Node.baseURIObject")}} {{Non-standard_inline()}} {{ Fx_minversion_inline("3") }}
(Não disponível para conteúdo Web). O objecto {{ Interface("nsIURI") }} apenas de leitura representa o URI base para o elemento.
{{domxref("Node.childNodes")}} {{readonlyInline}}
Retorna uma {{domxref("NodeList")}} activa quem contém todos os descendentes desse nó. Sendo {{domxref("NodeList")}} uma lista activa, significa que os descendentes do Node mudam, o objecto {{domxref("NodeList")}} é automaticamente actualizado.
{{domxref("Node.firstChild")}} {{readonlyInline}}
Retorna um {{domxref("Node")}} que representa o primeiro descendente directo do nó ou null se o nó não tiver descendentes.
{{domxref("Node.lastChild")}} {{readonlyInline}}
Retorna um {{domxref("Node")}} que representa o último descendente directo do Node, ou null caso o node não tenha descendentes.
{{domxref("Node.localName")}} {{readonlyInline}}{{obsolete_inline}}
Retorna uma {{domxref("DOMString")}} que representa a parte local do nome qualificado do elemento. No Firefox 3.5 e anteriores, a propriedade exibe o nome local do elemento HTML em maiúsculas (mas não o faz para elementos XHTML). Em versões posteriores, isto não se verifica, portanto a propriedade é exibida em letras minúsculas para ambos HTML e XHTML. {{ gecko_minversion_inline("1.9.2") }}. Apesar da especificação requerer que localName seja definido no interface {{domxref("Node")}}, browsers Gecko-based implementam-no no interface {{domxref("Element")}}.
{{domxref("Node.namespaceURI")}} {{readonlyInline}}{{obsolete_inline}}
O URI do namspace do node em causa, ou null, se não possuir namespace. No Firefox 3.5 e anteriores, elementos HTML não se encontravam em qualquer namespace. Em versões posteriores, elementos HTML estão no namespace http://www.w3.org/1999/xhtml quer na tree de HTML, quer na de XHTML {{ gecko_minversion_inline("1.9.2") }}
Apesar da especificação requerer namespaceURI definido no interface {{domxref("Node")}}, browsers Gecko-based implementam-no no interface {{domxref("Element")}}.
{{domxref("Node.nextSibling")}} {{readonlyInline}}
Retorna um {{domxref("Node")}} que representa o próximo node na tree, ou null caso esse node não exista.
{{domxref("Node.nodeName")}} {{readonlyInline}}
Retorna uma {{domxref("DOMString")}} que contém o nome do Node. A estrutura do nome difere do tipo do nome. Exemplo: um {{domxref("HTMLElement")}} irá conter o nome da tag correspondente, como 'audio' para um {{domxref("HTMLAudioElement")}}, um {{domxref("Text")}} node irá ter a string '#text', ou então um {{domxref("Document")}} node irá ter uma string '#document'.
{{domxref("Node.nodePrincipal")}} {{Non-standard_inline()}}{{ Fx_minversion_inline("3") }}
Um {{ Interface("nsIPrincipal") }} representa um node principal.
{{domxref("Node.nodeType")}}{{readonlyInline}}
Retorna um unsigned short que representa o tipo de node. Os valores possíveis são:
Nome Valor
ELEMENT_NODE 1
ATTRIBUTE_NODE {{deprecated_inline()}} 2
TEXT_NODE 3
CDATA_SECTION_NODE {{deprecated_inline()}} 4
ENTITY_REFERENCE_NODE {{deprecated_inline()}} 5
ENTITY_NODE {{deprecated_inline()}} 6
PROCESSING_INSTRUCTION_NODE 7
COMMENT_NODE 8
DOCUMENT_NODE 9
DOCUMENT_TYPE_NODE 10
DOCUMENT_FRAGMENT_NODE 11
NOTATION_NODE {{deprecated_inline()}} 12
{{domxref("Node.nodeValue")}}
É a {{domxref("DOMString")}} que representa o valor de um objecto. Para a maioria dos tipos de Node, isto retorna null e qualquer operação é ignorada. Para nodes do tipo TEXT_NODE (objectos {{domxref("Text")}}), COMMENT_NODE ({{domxref("Comment")}} objects), e PROCESSING_INSTRUCTION_NODE ({{domxref("ProcessingInstruction")}} objects), o valor corresponde ao valor textual contido no objecto.
{{domxref("Node.ownerDocument")}} {{readonlyInline}}
Retorna o {{domxref("Document")}} a que este node pertence. Se nenhum documento está associado com este, retorna null.
{{domxref("Node.parentNode")}} {{readonlyInline}}
Retorna um {{domxref("Node")}} que é o ascendente deste node. Se não existir tal node, como por exemplo se este node se encontra no nível raiz da tree ou se não consta nesta, esta propriedade retorna null.
{{domxref("Node.parentElement")}} {{readonlyInline}}
Retorna um {{domxref("Element")}} que é o ascendente deste node. Caso este node não tenha ascendente ou se o seu ascendente não é um {{domxref("Element")}}, esta propriedade retorna null.
{{domxref("Node.prefix")}} {{obsolete_inline}}
É uma {{domxref("DOMString")}} que representa o prefixo do namespace do node, ou null caso nenhum prefixo seja especificado.
Apesar da especificação requerer localName para ser definida no interface {{domxref("Node")}}, browsers Gecko-based implementam-no no interface {{domxref("Element")}}.
{{domxref("Node.previousSibling")}} {{readonlyInline}}
Retorna um {{domxref("Node")}} que representa o node anterior na tree ou null caso o node não exista.
{{domxref("Node.textContent")}}
É uma {{domxref("DOMString")}} que representa o valor textual de um elemento e todos os seus descendentes.

Métodos

Herda métodos dos seus pais {{domxref("EventTarget")}}.[1]

{{domxref("Node.appendChild()")}}
Insere um {{domxref("Node")}} como último descendente do elemento em causa.
{{domxref("Node.cloneNode()")}}
Clona um {{domxref("Node")}} e, opcionalmente, todo o seu conteúdo. Por omissão, clona o conteúdo do node.
{{domxref("Node.compareDocumentPosition()")}}
 
{{domxref("Node.contains()")}}
 
{{domxref("Node.getFeature()")}} {{obsolete_inline}}
...
{{domxref("Node.getUserData()")}} {{deprecated_inline}}
Permite ao utilizador extrair alguma {{domxref("DOMUserData")}} do node.
{{domxref("Node.hasAttributes()")}} {{obsolete_inline}}
Retorna um {{domxref("Boolean")}} que indica se o elemento tem atributos ou não.
{{domxref("Node.hasChildNodes()")}}
Retorna um {{domxref("Boolean")}} que indica se o elemento tem descendentes ou não.
{{domxref("Node.insertBefore")}}
Insere o primeiro {{domxref("Node")}} dado num parâmetro imediatamente antes do segundo descendente deste {{domxref("Node")}}.
{{domxref("Node.isDefaultNamespace")}}
 
{{domxref("Node.isEqualNode")}}
 
{{domxref("Node.isSameNode")}} {{obsolete_inline}}
 
{{domxref("Node.isSupported")}} {{deprecated_inline}}
Retorna uma flag Boolean que contém o resultado de um teste à implementação do DOM para aferir o suporte deste ou do node a uma determinada propriedade.
{{domxref("Node.lookupPrefix")}}
 
{{domxref("Node.lookupNamespaceURI")}}
 
{{domxref("Node.normalize")}}
Limpa todos os nodes textuais abaixo deste (converge os adjacentes e remove os vazios)
{{domxref("Node.removeChild")}}
Remove um node descendenter do elemento actual. Este deve ser um descendente do node actual.
{{domxref("Node.replaceChild")}}
Substitui um {{domxref("Node")}} descendente do actual com o fornecido no segundo parâmetro.
{{domxref("Node.setUserData")}} {{deprecated_inline}}
Permite a um utilizador anexar, ou remover {{domxref("DOMUserData")}} do node.
 

Exemplos

Percorrer todos os nodes descendentes

A seguinte função itera sobre os nodes descendentes de um node recursivamente e executa uma função de callback sobre os mesmos (e sobre o próprio node-pai).

function DOMComb (oParent, oCallback) {
  if (oParent.hasChildNodes()) {
    for (var oNode = oParent.firstChild; oNode; oNode = oNode.nextSibling) {
      DOMComb(oNode, oCallback);
    }
  }
  oCallback.call(oParent);
}

Síntaxe

DOMComb(parentNode, callbackFunction);

Descrição

Recursivamente iterar sobre os nodes descendentes de um parentNode e o próprio parentNode, executando uma callbackFunction sobre estes como objectos this.

Parâmetros

parentNode
O node ascendente (Node Object).
callbackFunction
A função de callback (Function).

Exemplo de utilização

O exemplo seguinte envia para a console.log o conteúdo textual do body:

function printContent () {
  if (this.nodeValue) { console.log(this.nodeValue); }
}

onload = function () {
  DOMComb(document.body, printContent);
};

Especificações

Especificação Estado Comentários
{{SpecName('DOM WHATWG', '#interface-node', 'Node')}} {{Spec2('DOM WHATWG')}} Removidas as seguintes propriedades: attributes, namespaceURI, prefix, e localName.
Removidos os seguintes métodos: isSupported(), hasAttributes(), isSameNode(), getFeature(), setUserData(), e getUserData().
{{SpecName('DOM3 Core', 'core.html#ID-1950641247', 'Node')}} {{Spec2('DOM3 Core')}} Os métodos insertBefore(), replaceChild(), removeChild(), e appendChild() retornam mais um tipo de erro  (NOT_SUPPORTED_ERR) caso sejam chamados no {{domxref("Document")}}.
O método normalize() foi modificado para que o node {{domxref("Text")}} possa também ser normalizado se a flag correcta de {{domxref("DOMConfiguration")}} estiver definida.
Adicionados os seguintes métodos: compareDocumentPosition(), isSameNode(), lookupPrefix(), isDefaultNamespace(), lookupNamespaceURI(), isEqualNode(), getFeature(), setUserData(), e getUserData().
Adicionadas as seguintes propriedades: baseURI e textContent.
{{SpecName('DOM2 Core', 'core.html#ID-1950641247', 'Node')}} {{Spec2('DOM2 Core')}} A propriedade ownerDocument foi ligeiramente alterada para que um  {{domxref("DocumentFragment")}} possa também retornar null.
Adicionadas as seguintes propriedades: namespaceURI, prefix, e localName.
Adicionados os seguintes métodos: normalize(), isSupported() and hasAttributes().
{{SpecName('DOM1', 'level-one-core.html#ID-1950641247', 'Node')}} {{Spec2('DOM1')}} Definição inicial.

 

Compatibilidade por browser

{{CompatibilityTable}}

Característica Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support {{CompatVersionUnknown}} {{CompatGeckoDesktop("1.0")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
getFeature(){{obsolete_inline}} {{CompatNo}} Suportada desde: {{CompatGeckoDesktop("1.0")}} até {{CompatGeckoDesktop("6.0")}}.
Removida em: {{CompatGeckoDesktop("7.0")}}
{{CompatUnknown}} {{CompatNo}} {{CompatNo}}
getUserData(), setUserData() e hasAttributes() {{deprecated_inline}} {{CompatNo}} Suportada desde: {{CompatGeckoDesktop("1.0")}} até {{CompatGeckoDesktop("21.0")}}.
Removida em: {{CompatGeckoDesktop("22.0")}}
{{CompatUnknown}} {{CompatNo}} {{CompatNo}}
isSameNode() {{obsolete_inline}} {{CompatNo}} Suportada desde: {{CompatGeckoDesktop("1.0")}} até {{CompatGeckoDesktop("9.0")}}.
Removida em: {{CompatGeckoDesktop("10.0")}}
{{CompatUnknown}} {{CompatNo}} {{CompatNo}}
isSupported() {{obsolete_inline}} {{CompatUnknown}} Suportada desde: {{CompatGeckoDesktop("1.0")}} até {{CompatGeckoDesktop("21.0")}}.
Removida em: {{CompatGeckoDesktop("22.0")}}
{{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support {{CompatVersionUnknown}} {{CompatGeckoMobile("1.0")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
getFeature(){{obsolete_inline}} {{CompatNo}} Suportade desde: {{CompatGeckoDesktop("1.0")}} até {{CompatGeckoDesktop("6.0")}}.
Removida em: {{CompatGeckoDesktop("7.0")}}
{{CompatUnknown}} {{CompatNo}} {{CompatNo}}

[1] Webkit e Blink incorrectamente não fazem com que  Node herde de {{domxref("EventTarget")}}.