Node
====

**`Node`** é uma interface da qual diversos tipos do DOM herdam, e que permite que esses tipos sejam tratados de forma similar, por exemplo, herdando os mesmos métodos ou sendo testados da mesma forma.

Todos os tipos a seguir herdam essa interface e seus métodos e propriedades (apesar de que alguns podem devolver `null` em casos particulares em que o método ou a propriedade não são relevantes; ou lançar uma exceção quando adicionando um filho a um tipo de nó que não pode ter filhos): `Document`, `Element`, `Attr`, `CharacterData` (do qual `Text` (en-US), `Comment` (en-US), e `CDATASection` (en-US) herdam), `ProcessingInstruction`, `DocumentFragment`, `DocumentType` (en-US), `Notation`, `Entity`, `EntityReference`

EventTarget

NodePropriedades
------------

*Herda propriedades de seus pais, `EventTarget`*.[1]

`Node.baseURI` Somente leitura 

Retorna uma `DOMString` representando o URL base do nó. O conceito de URL base muda de uma linguagem para outra; no HTML, ela corresponde ao protocolo, ao nome de domínio e a estrutura de diretório; tudo isso até a última `'/'`.

`Node.baseURIObject` (en-US) 
Non-standard

Retorna um objeto `nsIURI`, representando o URL base do nó. *(Indisponível para conteúdo Web)*

`Node.childNodes` Somente leitura 

Retorna um objeto `NodeList` "vivo" contendo todos os filhos deste nó. Dizer que um objeto `NodeList` é vivo significa que se houver alguma mudança em um dos filhos deste nó, o objeto `NodeList` é automaticamente atualizado com tais mudanças.

`Node.firstChild` Somente leitura 

Retorna um `Node` representando o primeiro filho direto do nó ou `null`, caso o nó não tenha nenhum filho.

`Node.lastChild` Somente leitura 

Retorna um `Node` representando o último filho direto do elemento ou `null`, caso o elemento não tenha nenhum filho.

`Node.nextSibling` Somente leitura 

Retorna um `Node` representando o próximo elemento na árvore ou `null`, caso tal nó não exista.

`Node.nodeName` (en-US) Somente leitura 

Retorna uma `DOMString` contendo o nome do elemento, do `Node`. A estrutura do nome irá mudar conforme o tipo do elemento. Veja as diferenças na documentação do método `Node.nodeName` (en-US).

`Node.nodePrincipal` (en-US) 
Non-standard

Uma interface `nsIPrincipal` representando o nó principal.

`Node.nodeType` (en-US)Somente leitura 

Retorna um `unsigned short` representando o tipo do nodo. Valores possíveis são:



| Nome | Valor |
| --- | --- |
| `ELEMENT_NODE` | 1 |
| `ATTRIBUTE_NODE` | 2 |
| `TEXT_NODE` | 3 |
| `CDATA_SECTION_NODE` | 4 |
| `ENTITY_REFERENCE_NODE` | 5 |
| `ENTITY_NODE` | 6 |
| `PROCESSING_INSTRUCTION_NODE` | 7 |
| `COMMENT_NODE` | 8 |
| `DOCUMENT_NODE` | 9 |
| `DOCUMENT_TYPE_NODE` | 10 |
| `DOCUMENT_FRAGMENT_NODE` | 11 |
| `NOTATION_NODE` | 12 |

`Node.nodeValue` (en-US)

Retorna / Define o valor do nó atual

`Node.ownerDocument` (en-US) Somente leitura 

Retorna o `Document` qual esse nó pertence. Se o nó em si é um documento, retorna `null`.

`Node.parentNode` Somente leitura 

Retorna um `Node` que é pai desse nó. Se não existe tal nó, como, por exemplo, se esse nó é o topo da árvore ou se ele não participa de uma árvore, essa propriedade retorna `null`.

`Node.previousSibling` Somente leitura 

Retorna um `Node` representando o último nó em uma árvore ou `null` se não existe tal nodo.

`Node.textContent`

Retorna / Define o conteúdo textual de um elemento e de todos os seus descendentes.

### Propriedades descontinuadas

`Node.rootNode` (en-US) Somente leitura  
Deprecated

Retorna um objeto `Node` representando o nó mais alto em uma árvore, ou o nó atual, se ele for o mais alto da árvore. Isso foi substituído por `Node.getRootNode()` (en-US).

### Propriedades obsoletas

`Node.localName` (en-US)Somente leitura 

Retorna um `DOMString` representando a parte local do nome qualificado de um elemento.

**Nota:** No Firefox 3.5 e nas versões anteriores, a propriedade coloca em caixa alta o nome local de elementos HTML (mas não elementos XHTML). Em versões posteriores, isso não acontece, então a propriedade está em caixa baixa para ambos HTML e XHTML.

`Node.namespaceURI` (en-US)Somente leitura 

O espaço de nomes URI desse nó, ou `null` se não estiver no espaço de nomes.

**Nota:** No Firefox 3.5 e nas versões anteriores, elementos HTML estão no espaço de nomes. Em versões posteriores, elementos HTML estão em `https://www.w3.org/1999/xhtml/`, nas árvores HTML e XML.

`Node.prefix` (en-US)Somente leitura 

É um `DOMString` representando o espaço de nomes do nó, ou `null` se nenhum prefixo é especificado.

Métodos
-------

* `Node.appendChild`
* `Node.cloneNode`
* `Node.compareDocumentPosition` (en-US)
* `Node.contains`
* `Node.getFeature`
* `Node.getUserData`
* `Node.hasAttributes`
* `Node.hasChildNodes` (en-US)
* `Node.insertBefore`
* `Node.isDefaultNamespace` (en-US)
* `Node.isEqualNode` (en-US)
* `Node.isSameNode` (en-US) 
Deprecated
* `Node.lookupPrefix` (en-US)
* `Node.lookupNamespaceURI` (en-US)
* `Node.normalize` (en-US)
* `Node.removeChild`
* `Node.replaceChild`
* `Node.setUserData`
Constantes
----------

Veja também `Node.nodeType` (en-US)

| Nome | Valor |
| --- | --- |
| `ELEMENT_NODE` | 1 |
| `ATTRIBUTE_NODE` | 2 |
| `TEXT_NODE` | 3 |
| `DATA_SECTION_NODE` | 4 |
| `ENTITY_REFERENCE_NODE` | 5 |
| `ENTITY_NODE` | 6 |
| `PROCESSING_INSTRUCTION_NODE` | 7 |
| `COMMENT_NODE` | 8 |
| `DOCUMENT_NODE` | 9 |
| `DOCUMENT_TYPE_NODE` | 10 |
| `DOCUMENT_FRAGMENT_NODE` | 11 |
| `NOTATION_NODE` | 12 |
| `DOCUMENT_POSITION_DISCONNECTED` | 0x01 |
| `DOCUMENT_POSITION_PRECEDING` | 0x02 |
| `DOCUMENT_POSITION_FOLLOWING` | 0x04 |
| `DOCUMENT_POSITION_CONTAINS` | 0x08 |
| `DOCUMENT_POSITION_CONTAINED_BY` | 0x10 |
| `DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC` | 0x20 |

Exemplos de código
------------------

### Recuperar todos os nós filhos

A função a seguir percorre todos os nós filhos de um nó recursivamente e executa uma função de callback em cada um deles (e no nó pai também).


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


#### Sintaxe
```

DOMComb(parentNode, callbackFunction);
```


#### Descrição

Percorre todos os nós filhos de `parentNode` recursivamente e o próprio `parentNode` e executa a `callbackFunction` em cada um deles como `this` (en-US).

#### Parâmetros

`parentNode`

O nó pai (`Object``do tipo Node`).

`callbackFunction`

A função de callback (`Function` (en-US)).

#### Exemplo de uso

O exemplo a seguir envia para a função `console.log` o conteúdo textual do body:


```js
function imprimeConteudo() {
  if (this.nodeValue) {
    console.log(this.nodeValue);
  }
}

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

Especificações
--------------

| Specification |
| --- |
| DOM Standard # interface-node |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.