表 1. 用于访问元素的方法
方法
说明
document.getElementById( aId )
返回具有指定 ID 的元素的引用。
document.getElementsByTagName( aTagName )
返回文档中具有指定名称的元素数组。
Mozilla 通过 JavaScript 支持遍历 DOM 树的 W3C DOM API(如表 2 所示)。文档中每个节点都可使用这些 API 方法,可以在任何方向上遍历树。Internet Explorer 也支持这些 API,还支持原来用于遍历 DOM 树的 API,比如 children 属性。
表 2. 用于遍历 DOM 的方法
属性/方法
说明 值
说明
childNodes
返回元素所有子节点的数组。
firstChild
返回元素的第一个子节点。
getAttribute( aAttributeName )
返回指定属性的值。
hasAttribute( aAttributeName )
返回一个 Boolean 值表明当前节点是否包含指定名称的属性。
hasChildNodes()
返回一个布尔指表明当前节点是否有子节点。
lastChild
返回元素的最后一个子节点。
nextSibling
返回紧接于当前节点之后的节点。
nodeName
用字符串返回当前节点的名称。
nodeType
返回当前节点的类型。
1
元素节点
2
属性节点
3
文本节点
4
CDATA 选择节点
5
实体引用节点
6
实体节点
7
处理指令节点
8
注释节点
9
文档节点
10
文档类型节点
11
文档片断节点
12
符号节点
nodeValue
返回当前节点的值。对于包含文本的节点,如文本和注释节点返回其字符串值。对于属性节点返回属性值。其他节点返回 null。
ownerDocument
返回包含当前节点的 document 对象。
parentNode
返回当前节点的父节点。
previousSibling
返回当前节点之前的相邻节点。
removeAttribute( aName )
从当前节点中删除指定的属性。
setAttribute( aName, aValue )
设置指定属性的值。
Internet Explorer 有一种非标准的特殊行为,这些 API 很多跳过(比如)新行字符生成的空白文本节点。Mozilla 则不跳过,因此有时候需要区分这些节点。每个节点都有一个 nodeType 属性指定了节点类型。比如,元素节点类型是 1,文本节点是 3,而注释节点是 8。仅处理元素节点最好的办法是遍历所有子节点,然后处理那些 nodeType 为 1 的节点:
HTML: <div> <span>Test</span> c </div> JavaScript: var myDiv = document.getElementById("foo"); var myChildren = myXMLDoc.childNodes; for (var i = 0; i < myChildren.length; i++) { if (myChildren[i].nodeType == 1){ // element node } }Mozilla 支持向 DOM 动态增加内容的遗留方法,如 document.write、document.open 和 document.close。Mozilla 也支持 Internet Explorer 的 InnerHTML 方法,该方法基本上可以在任何节点上使用。但是不支持 OuterHTML(围绕着元素添加标记,标准中也没有等价的方法)和 innerText(设置节点的文本值,在 Mozilla 中可使用 textContent)。
Internet Explorer 有一些非标准的、Mozilla 不支持的内容操作方法,包括检索值、插入文本以及邻近某个节点插入元素,比如 getAdjacentElement 和 insertAdjacentHTML。表 3 说明了 W3C 标准和 Mozilla 操纵内容的方法,这些方法适用于任何 DOM 节点。