[TOC]
* * * * *
### `Node` 類型
DOM中所有節點的父級類型,后面要講到的幾種類型負責實現這一父類型。

>node實例有三個常用屬性:
`nodeType`(可以判斷這個節點的類型,是元素、注釋或屬性等);
`nodeName`(元素節點該值為標簽名的大寫);
`nodeValue`(元素節點的該值為null)。
> 判斷是不是元素節點 `someNode.nodeType==1`。
節點類型`nodeType`取值有12種,值為均為常量。
每個節點都有一個`childNodes`屬性,其中保存這一個`nodeList`對象(實時更新)。
* * * * *
~~~
讀方法:
nodeList[index]
nodeList.item(index)
~~~
~~~
判斷有無子節點:
node.hasChildNodes( )
~~~
> 針對節點的操作函數有:增刪改、拷貝
~~~
插在子元素列表的最后:
var returnedNode=someNode.appendChild(newNode)
~~~
~~~
在某個位置插入:
var returnedNode=someNode.insertBefore(newNode,someChildNode);
如果這里的定位子元素為null,那么就會被插入到最后
~~~
~~~
替換原來已有的元素:
var returnedNode=someNode.replaceChild(newNode, someChildNode);
~~~
>[success] 對于上面的三個操作,有個規則,如果該節點已經存在于文檔中,
那么此節點會自動從原來的位置移除,出現在新位置上;
~~~
刪除:
var returnedNode=someNode.removeChild(someChildNode)
高程3里描述:
“替換和刪除后,原來的節點還在只是沒有了自己的位置 ”,對此我不理解。
~~~
~~~
克隆:
var newList=oldList.cloneNode(true/false);
true 深拷貝,會把子節點也拷貝上;
false 淺拷貝,只是拷貝這個父級元素本身
~~~
* * * * *
**實踐:**
:-: 


* * * * *
### `Document` 類型
這里關心的是瀏覽器中與`html`相關的類型(拋開`XML`文檔),`HTMLDocument`(繼承自`Document`)的實例 `document`對象,其表示整個頁面。


* * * * *
~~~
document.documentElement 取的HTML的整個引用
方法:
.getElementById( )
.getElementsByName( )--可以取出單選元素
如果所求元素不存在就返回null
.getElementsByTagName( )
存在就返回一個 HTMLCollection的實例
讀方法: [], item(), namedItem()--通過元素的name屬性標識
在引擎處理查詢時候,
如果方括號里傳入的是數字,就調用 item(),
如果是字符串就調用 namedItem()
特殊集合:
.images .links .forms
文檔寫入(將輸出流寫入到網頁中的能力):
write() writeln() (自動帶一個換行符)
open() close() 打開和關閉網頁的輸出流,
如果是在頁面加載期間則不需要使用這兩個方法
~~~
**實踐:**

* * * * *
### `Element` 類型
> 用于標識`html`元素,提供了對元素標簽名、子節點、及特性的訪問
所有`html`元素的直接類型都是`HTMLElement`(區別于`XML`)
~~~
元素的標準屬性,可以直接用點號取出,如 :
class,title, name, id,
className(有保留字的要做處理,class-->className )
~~~


> 還有一些自定義的屬性,只能用 `getAttribute() , setAttribute() , removeAttribute()` 來操作,自定義屬性在非嚴格模式下如果用點號操作,不會報錯,但是不起作用;嚴格模式下,報錯

~~~
創建元素實例
var div=document.createElement('div');
// 書上看到說是可以通過字符串來創建完整的元素,經試驗,不行!
div.name .className......
添加其他屬性就用 setAttribute()
~~~
* * * * *
### `Text` 類型
~~~
var text=document.createTextNode('wdd')
div.appendChild(text) 給元素添加文本節點
~~~
* * * * *
### `DocumentFragment` 類型
~~~
document.createDocumentFragment();
相當于生成了一個 temp,把對DOM要做的操作,先預處理在這個片段上,
然后一次性操作,性能更好。
~~~
* * * * *