DOM整理
节点类型
1.元素节点类型
节点类型 | 数值 |
---|---|
元素节点 | 1 |
属性节点 | 2 |
文本节点 | 3 |
文档节点 | 9 |
2.nodeName和nodeValue属性
元素节点的nodeValue始终为null,nodeName始终保存元素的标签名。
3.childNodes
element.childNodes
返回类数组对象。
4.Document类型
属性 | 值 |
---|---|
nodeType | 9 |
nodeName | "#document" |
nodeValue | null |
parentNode | null |
5.document.referrer // 取得来源页面的URL
6.Element类型
属性 | 值 |
---|---|
nodeType | 1 |
nodeName | 元素标签名 |
nodeValue | null |
parentNode | Document和Element |
子节点 | Element、Text、Comment、ProcessingInstruction、CDATASection或EntityReference |
attributes | 标签属性集合 |
访问元素标签名,也可以通过tagName访问
7.Text类型
属性 | 值 |
---|---|
nodeType | 3 |
nodeName | "#text" |
nodeValue | 节点所包含的文本 |
parentNode | 一个Element |
子节点 | 无 |
DOM扩展
1.可以调用querySelector()和querySelectorAll()方法的类型可以为Document、DocumentFragment和Element。
2.由于IE9及之前版本不会返回文本节点,而其他浏览器都会返回文本节点,导致了在使用childNodes和firstChild等属性时的行为不一致。可以通过以下API来解决。
方法 | 说明 |
---|---|
childElementCount | 返回子元素个数(不包含文本节点和注释) |
firstElementChild | 返回第一个元素节点 |
lastElementChild | 返回最后一个元素节点 |
perviousElementSibling | 返回上一个兄弟元素节点 |
nextElementSibling | 返回下一个兄弟元素节点 |
3.有关类名
- getElementsByClassName()获取带有指定类的所有元素的NodeList
- classList属性
- add(value) 将给定字符串添加到列表,如存在,则不添加
- remove() 删除
- contains() 是否包含
- toggle() 列表如存在,则删除;如不存在,则添加
// 例子
// 删除disabled类
div.classList.remove('disabled');
1
2
3
4
2
3
4
附:汇总
方法 | 说明 |
---|---|
element.childNodes | 获取元素所有子节点 |
element.nodeType | 获取元素节点类型 |
element.nodeName | 获取元素节点名称 |
element.parentNode | 获取元素父节点 |
element.previousSibling | 获取元素上一个兄弟节点 |
element.nextSibling | 获取元素下一个兄弟节点 |
element.firstChild | 获取元素第一个子节点 |
element.lastChild | 获取元素最后一个子节点 |
element.hasChildNodes() | 获取元素是否存在子节点,存在返回true |
element.ownerDocument | 获取整个文档的文档节点document |
element.appendChild(newNode) | 向元素最后位置添加子元素,如果newNode已经是文档中一部分,那么只是该节点变成最后一个子节点 |
element.insertBefore(newNode, null) | 向元素指定位置(参照元素前)添加子元素,第一个参数为新元素,第二个参数为参照元素,如果第二个参数为null,那么该方法相当于appendChild |
element.replaceChild(newNode, oldNode) | 替换子节点 |
element.removeChild(someNode) | 移除子节点,该方法返回被移除的节点 |
element.cloneNode(true) | 克隆节点,如果方法内参数为true,则复制节点及其所有子节点,如果为false,则复制节点 |
element.setAttribute() | 设置特性 |
element.removeAttribute() | 移除特性 |
element.getAttribute() | 获取特性 |
document.createTextNode("hello world!") | 创建文本节点 |
document.createElement("div") | 创建元素节点 |
document.createDocumentFragment() | 创建文档片段,该片段继承了Node所有方法,通常用来执DOM操作 |