
Node接口定义了所有节点类型都包含的特性和方法。
| 特性/方法 | 类型/返回类型 | 说明 |
| nodeName | String | 节点的名字;根据节点的类型而定义 |
| nodeValue | String | 节点的值;根据节点的类型而定义 |
| nodeType | Number | 节点的类型常量值之一 |
| ownerDocument | Document | 指向这个节点所属的文档 |
| firstChild | Node | 指向在childNodes列表中的第一个节点 |
| lastChild | Node | 指向在childNodes列表中的最后一个节点 |
| childNodes | NodeList | 所有子节点的列表 |
| previousSibling | Node | 指向前一个兄弟节点;如果这个节点就是第一个兄弟节点,那么该值为null |
| nextSibling | Node | 指向后一个兄弟节点;如果这个节点就是最后一个兄弟节点,那么该值为null |
| hasChildNodes() | Boolean | 当childNodes包含一个或多个节点时,返回真 |
| attributes | NamedNodeMap | 包含了代表一个元素的特性的Attr对象;仅用于Element节点 |
| appendChild(node) | Node | 将node添加到childNodes的末尾 |
| removeChild(node) | Node | 从childNodes中删除node |
| replaceChild(newnode,oldnode) | Node | 将childNodes中的oldnode替换成newnode |
| insertBefore(newnode,refnode) | Node | 在childNodes中的refnode之前插入newnodd |
2.访问相关的节点
下面的几节中考虑下面的HTML页面
代码如下:
Hello World!
Isn't this exciting?
You're learning to use the DOM!
3.处理特性
正如前面所提到的,即便Node接口已具有attributes方法,且已被所有类型的节点继承,然而,只有
Element节点才能有特性。Element节点的attributes属性其实是NameNodeMap,它提供一些用于访问和处理其内容的方法:
getNamedItem(name)--返回nodename属性值等于name的节点;
removeNamedItem(name)--删除nodename属性值等于name的节点;
setNamedItem(node)--将node添加到列表中,按其nodeName属性进行索引;
item(pos)--像NodeList一样,返回在位置pos的节点;
注:请记住这些方法都是返回一个Attr节点,而非特性值。
NamedNodeMap对象也有一个length属性来指示它所包含的节点的数量。
当NamedNodeMap用于表示特性时,其中每个节点都是Attr节点,这的nodeName属性被设置为特性名称,而nodeValue属性被设置为特性的值。例如,假设有这样一个元素:
Hello world!
4.访问指定节点
(1)getElementsByTagName()
核 心(XML) DOM定义了getElementsByTagName()方法,用来返回一个包含所有的tagName(标签名)特性等于某个指定值的元素的 NodeList。在Element对象中,tagName特性总是等于小于号之后紧跟随的名称--例如,的tagName是"img"。下一行代码返回文档中所有
元素的列表:
var oImgs = document.getElementsByTagName("img");
把所有图形都存于oImgs后,只需使用方括号或者Item()方法(getElementsByTagName()返回一个和childNodes一样的NodeList),就可以像访问子节点那样逐个访问这些节点了:
alert(oImgs[0].tagName); //outputs "IMG"
假如只想获取在某个页面第一个段落的所有图像,可以通过对第一个段落元素调用getElementsByTagName()来完成,像这样:
var oPs = document.getElementByTagName("p");
var oImgsInp = oPs[0].getElementByTagName("img");
可以使用一个星号的方法来获取document中的所有元素:
var oAllElements = document.getElementsByTagName("*");
当参数是一个星号的时候,IE6.0并不返回所有的元素。必须使用document.all来替代它。
(2)getElementsByName()
HTML DOM 定义了getElementsByName(),这用来获取所有name特性等于指定值的元素的。
(3)getElementById()
这是HTML DOM定义的第二种方法,它将返回id特性等于指定值的元素。在HTML中,id特性是唯一的--这意味着没有两个元素可以共享同一个id。毫无疑问这是从文档树中获取单个指定元素最快的方法。
注:如果给定的ID匹配某个元素的name特性,IE6.0还会返回这个元素。这是一个bug,也是必须非常小心的一个问题。
5.创建新节点
最常用到的几个方法是
createDocumentFragment()--创建文档碎片节点
createElement(tagname)--创建标签名为tagname的元素
createTextNode(text)--创建包含文本text的文本节点
createElement()、createTextNode()、appendChild()
代码如下:
removeChild()、replaceChild()、insertBefore()
删除节点
代码如下:
Hello World!
Hello World!
Hello World!
createDocumentFragment()
一旦把节点添加到document.body(或 者它的后代节点)中,页面就会更新并反映出这个变化。对于少量的更新,这是很好的,然而,当要向document添加大量数据时,如果逐个添加这些变动, 这个过程有可能会十分缓慢。为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次性添加到document中,假如 想创建十个新段落
代码如下:

7.table方法
为了协助建立表格,HTML DOM给
| 特性/方法 | 说明 |
| caption | 指向 |
| tBodies | |
| tFoot | 指向 |
| tHead | 指向元素(如果存在) |
| rows | 表格中所有行的集合 |
| createTHead() | 创建元素并将其放入表格 |
| createTFood() | 创建 |
| createCpation() | 创建 |
| deleteTHead() | 删除元素 |
| deleteTFood() | 删除 |
| deleteCaption() | 删除 |
| deleteRow(position) | 删除指定位置上的行 |
| insertRow(position) | 在rows集合中的指定位置上插入一个新行 |
| 特性/方法 | 说明 |
| rows | |
| deleteRow(position) | 删除指定位置上的行 |
| insertRow(position) | 在rows集合中的指定位置上插入一个新行 |
| 特性/方法 | 说明 |
| cells | |
| deleteCell(postion) | 删除给定位置上的单元格 |
| insertCell(postion) | 在cells集合的给点位置上插入一个新的单元格 |
