# DOM

## 节点层次

![JAVASCRIPT高级程序设计_9_DOM_节点层次- Jonathan_C - 博客园](12.dom.assets/1316408-20180226171835400-1011513544.png)



## 节点类型

## Document

> nodeType 9
>
> nodeName '#document'
>
> nodeValue null
>
> parentNode null
>
> ownerDocument null

```javascript
// 获取body
var body = document.body
// 标题
// 获取
var name = document.title;
// 修改
document.title = "新名字"
// 获取url
document.URL
// 获取域名
document.domain
// 获取来源
document.referrer
```

### 选择元素

- id
- class
- name
- tagname

### document.getElementById()

### document.getElementsByClassName()

### document.getElementsByTagName()

### document.getElementsByName()

## 文档写入 了解一下



- write
- writeln
- open
- close

```javascript
write 在加载中不会覆盖页面 但是在页面加载完之后调用就会覆盖页面
writeln 会在后面多输出一个换行符
open 打开文档写入 如果没有调用 在write 的时候会自动执行
close 写入完毕 执行之后再次写入会清除页面
```

## Element

> nodetype 1
>
> nodeName 标签名
>
> nodeValue null
>
> parentNode Document / Element

### 相对于文档增加了几个属性

- id
- title
- lang
- dir
- className

### 如何操作其他属性

获取属性

> .getAttribute()

设置属性

> .setAttribute() 会自动转化为小写

### 创建元素

> document.createElement("")

### 添加元素到指定文档

```javascript
appendChid()
insertBefore()
replaceChild()
```

### 获取元素后代

> childNodes

## Text

> nodetype 3
>
> nodeName #text
>
> nodeValue 内容
>
> parentNode Element
>
> 没有字节点

>  可以使用 nodeValue 或者 data 访问 修改

- appendData()
- deleteData()
- replaceData()
- spitText()
- substringData()



#### 合并文本节点 (规范化)

normalize()

#### 拆分文本节点

splitText()