(一)HTMLDocument接口
操作HTML文档的第一步就是获取对文档元素的引用,每一个元素在DOM中就是一个节点,所有的元素在DOM中构成一个节点树。
用于获取元素节点定义的方法定义于HTMLDocument接口,window.document方法用于实现该接口,其定义的常用方法和属性如下:
属性或方法 | 返回值类型 | 说明 |
[getter] | 任何类型 | 根据元素的name属性获取所有元素节点 |
all | HTMLAllCollection | 文档中所有元素组成的集合,已不推荐使用 |
body | HTMLElement | 获取<body>元素节点 |
head | HTMLHeadElement | 获取<head>元素节点 |
images | HTMLCollection | 获取所有<img>元素节点 |
embeds | HTMLCollection | 获取所有<embed>元素节点 |
plugins | HTMLCollection | 等同于embeds属性 |
links | HTMLCollection | 获取所有带href属性的<a>和<area>元素节点 |
forms | HTMLCollection | 获取所有<form>元素节点 |
scripts | HTMLCollection | 获取所有<script>元素节点 |
getElementsByName() | NodeList | 根据元素的name属性获取所有元素节点 |
getElementsByClassName() | NodeList | 根据元素的class属性获取所有元素节点 |
另外,HTMLDocument接口也继承了Core DOM的Document接口,继承的属性和方法如下:
另外,HTMLDocument接口也继承了Core DOM的Document接口,继承的属性和方法如下:
属性或方法 | 返回值类型 | 说明 |
documentElement | Element | 获取xml或者html的根元素,在html中即<html> |
getElementById() | Element | 根据ID属性值获取指定元素 |
getElementsByTagName() | NodeList | 根据元素名称获取所有元素节点 |
getElementsByTagNameNS() | NodeList | 根据指定的命名空间的元素名获取所有元素节点 |
(二):Node接口
所有的节点都使用Node接口来表示,可以使用很多方法去获取节点,如document.getElementsByTagName()、document.getElementsByName()等均返回一个NodeList对象,然后获取其中的节点。
节点对应的属性和放大均在Node接口予以定义:
1、Node接口常见的属性列表
属性名 | 数据类型 | 说明 |
nodeName | DOMString | 返回节点名 |
nodeValue | DOMString | 返回节点值 |
nodeType | int | 返回节点类型(见后文) |
parentNode | Node | 返回当前节点的父节点 |
childNodes | NodeList | 返回当前节点的所有子节点 |
firstChild | Node | 返回当前节点的第一个子节点 |
lastChild | Node | 返回当前节点的最后一个子节点 |
previousSibling | Node | 返回当前节点的紧邻的前一个兄弟节点 |
nextSibling | Node | 返回当前节点的紧邻的后一个兄弟节点 |
attributes | NamedNodeMap | 返回当前节点的所有属性 |
ownerDocument | Document | 返回当前节点对应的Document对象 |
namespaceURI | DOMString | 返回当前节点所属命名空间的URI |
prefix | DOMString | 返回当前节点所属命名空间的前缀 |
localName | DOMString | 返回当前节点限定名的本地部分 |
2、Node接口常见的方法列表
方法名 | 数据类型 | 说明 |
appendChild | Node | 在末尾添加一个子节点 |
cloneNode | Node | 克隆一个子节点 |
hasAttributes | Boolean | 判断该节点是否有属性 |
hasChildNodes | Boolean | 判断该节点是否有子节点 |
insertBefore | Node | 在指定节点插入一个节点 |
isSupported | Boolean | 判断节点特定是否被支持 |
normalize | Void | 规格化节点 |
removeChild | Node | 删除一个子节点 |
replaceChild | Node | 替换一个子节点 |
3、Node类型
在DOM文档中,每一个节点都属于一种类型,可以使用Node.nodeType属性获取节点的类型。DOM规范规定了12种节点类型,可以使用Node接口定义的常量表示,也可以用数字表示。
节点类型常量 | 数值表示 | 说明 |
ELEMENT_NODE | 1 | 元素节点 |
ATTRIBUTE_NODE | 2 | 属性节点 |
TEXT_NODE | 3 | 文本节点 |
CDATA_SECTION_NODE | 4 | CDATA节点 |
ENTITY_REFERENCE_NODE | 5 | 实体引用节点 |
ENTITY_NODE | 6 | 实体节点 |
PROCESSING_INSTRUCTION_NODE | 7 | 处理指令节点 |
COMMENT_NODE | 8 | 注释节点 |
DOCUMENT_NODE | 9 | 文档节点 |
DOCUMENT_TYPE_NODE | 10 | 文档类型节点 |
DOCUMENT_FRAGMENT_NODE | 11 | 文档片段节点 |
NOTATION_NODE | 12 | 符号节点 |
三):Element接口和HTMLElement接口
一、Element接口
Element接口表示一个元素,该接口扩展自Node接口,自然继承了Node接口的属性和方法,也有一套针对元素的属性和方法。
Element接口常见的属性比较少,常用的就是一个只读的tagName属性,该属性返回元素名,数据类型是DOMString。
Element接口定义的方法也主要是针对属性操作,常见方法如下:
方法名 | 数据类型 | 说明 |
getAttribute | DOMString | 返回对应属性 |
getAttributeNode | Attr | 返回对应属性节点 |
getAttributeNodeNS | Attr | 返回属性命名空间 |
getAttributeNS | DOMString | 返回对应属性节点 |
getElementsByTagName | NodeList | 节点名获取元素列表 |
getElementsByTagNameNS | NodeList | 根据指定空间内的标签名搜索所有元素 |
hasAttribute | Boolean | 判断属性是否存在 |
hasAttributeNS | Boolean | 判断属性是否存在 |
removeAttribute | void | 删除属性 |
removeAttributeNode | Attr | 删除属性 |
removeAttributeNS | void | 删除属性 |
setAttribute | void | 添加属性 |
setAttributeNode | Attr | 添加属性节点 |
setAttributeNodeNS | Attr | 添加属性节点 |
setAttributeNS | void | 添加属性 |
二、HTMLElement接口
该接口继承自Element接口,同样用于表示一个HTML元素,拥有自定义的属性和方法。
1、属性列表
属性名 | 数据类型 | 只读 | 说明 |
innerHTML | DOMString | 获取或设置HTML内容 | |
outerHTML | DOMString | 设置或获取对象的纯文本形式 | |
id | DOMString | 对应元素的id属性 | |
title | DOMString | 对应元素的title属性 | |
lang | DOMString | 对应元素的lang属性 | |
dir | DOMString | 对应元素的dir属性 | |
className | DOMString | 对应元素的class属性 | |
classList | DOMTokeList | Y | 返回元素的class属性作为DOMTokenList对象 |
dataset | DOMStringMap | Y | 返回自定义的data-*属性集合 |
hidden | Boolean | 对应元素的hidden属性 | |
tabIndex | long | 对应元素的tabIndex属性 | |
accessKey | DOMString | 对应元素的accessKey属性 | |
accessKeyLabel | DOMString | Y | 返回热键组合 |
draggable | Boolean | 对应元素的draggable属性 | |
contentEditable | DOMString | 对应元素的contentEditable属性 | |
isContentEditable | Boolean | Y | 判断元素是否可用编辑 |
contextMenu | HTMLMenuElement | 对应元素的contextMenu属性 | |
spellcheck | DOMString | 对应元素的spellcheck属性 | |
commandType | DOMString | Y | 对应元素的commandType属性 |
label | DOMString | Y | 对应元素的label属性 |
icon | DOMString | Y | 对应元素的icon属性 |
disabled | Boolean | Y | 对应元素的disabled属性 |
checked | Boolean | Y | 对应元素的checked属性 |
style | CSSStyleDeclaration | Y | 对应元素的style属性 |
2、方法列表
方法名 | 数据类型 | 说明 |
getElementsByClassName | NodeList | 根据元素的class属性获取所有元素 |
insertAdjacentHTML | void | 在指定位置插入HTML或XML |
click | void | 单击元素,触发click事件 |
scrollIntoView | void | 滚动元素内容到视点内 |
focus | void | 元素获取焦点 |
blur | void | 元素失去焦点 |
(四):HTML 5 DOM复杂数据类型
HTML 5 DOM定义了一下集合、列表等复杂的数据类型用于实现便捷的操作。相对于HTML 4 DOM,HTML 5 DOM增加了HTMLCollection、DOMTokenList、DOMStringMap、HTMLAllCollection、HTMLFormControlsCollection等。
一、HTMLCollection、HTMLAllCollection和HTMLFormControlsCollection
三个接口均用于表示一组元素组成的列表。HTMLAllCollection和HTMLFormControlsCollection均继承自HTMLCollection接口,对HTMLCollection接口中定义的namedItem()方法进行了重写。在DOM笔记(一):HTMLDocument接口,利用document.forms(/images/embeds等)返回一个HTMLCollection对象,document.all则返回一个HTMLAllCollection对象,document.forms.elements则返回一个HTMLFormControlsCollection对象,该对象包含了form中的所有表单元素。
属性或者方法 | 数据类型 | 说明 |
length | long | 只读,返回集合中的元素数量。三个接口均有此属性 |
item() | object | 1、根据索引获取集合中的元素。在HTMLCollection中定义 |
(五):JavaScript的常见事件和Ajax小结
一、常见事件类型
1、鼠标事件
事件名称 | 说明 |
onclick | 鼠标单击时触发 |
ondbclick | 鼠标双击时触发 |
onmousedown | 鼠标左键按下时触发 |
onmouseup | 鼠标释放时触发 |
onmouseover | 鼠标的光标移动到某对象上时触发 |
onmousemove | 鼠标移动时触发 |
onmouseout | 鼠标光标离开某对象时触发 |
ps:当单击一次鼠标左键的时候,将同时触发onclick、onmousedown、onmouseup三个事件,事件处理程序执行的先后顺序为:onmousedown>onmouseup>onclick.因为按下鼠标产生的动作肯定是在释放鼠标之前的,而一次按下加上一次释放,才代表一次单击,所以onclick最后执行。
2、键盘事件
事件名称 | 说明 |
onkeypress | 某个键按下以后触发 |
onkeydown | 某个键按下时触发 |
onkeyup | 某个键被释放时触发 |
ps:对键盘的操作也会同时触发这三个事件,其处理程序执行的先后顺序是onkeydown>onkeypress>onkeyup.原因参见鼠标事件。
3、页面事件
事件名称 | 说明 |
onerror | 页面出错时触发 |
onload | 页面加载完成时触发 |
onresize | 浏览器窗口大小该表时触发 |
onscroll | 浏览器滚动条的位置发生变化时触发 |
onunload | 页面将被卸载时触发 |
4、表单事件
事件名称 | 说明 |
onblur | 元素失去焦点时触发 |
onchange | 元素失去焦点并且元素内容改变时触发 |
onfocus | 元素获得焦点时触发 |
onsubmit | 表单被提交时触发 |
二、JavaScript Ajax小结
1.创建XHR对象
方法 | 说明 |
new ActiveXObject(“Microsoft.XMLHTTP”) | 适用于i支持window.ActiveXObject的ie5和ie6等 |
new XMLHttpRequest() | 适用于ie7+/ff/chrome/safari/opera等 |
2、XHR对象的属性和方法
属性或方法 | 说明 |
readyState | 通信状态,取值0~4,见后文 |
onreadystatechange | readyState改变时触发此事件 |
responseText | 服务器返回的文本格式文档 |
responseXML | 服务器返回的XML格式文档 |
status | 状态码,如100,200,404,500等 |
statusText | 状态码对应的文本(OK/Not Found) |
abort() | 中止当前请求 |
open(method,url) | 打开一个请求 |
send(args) | 发送请求 |
setRequestHeader(key,value) | 设置请求的头部 |
getResponseHeader(key) | 获取响应的头部值 |
getAllResponseHeaders() | 以键值对形式返回所有头部信息 |
3、readyState属性
代码 | 说明 |
0 | 代表一个未初始化的状态。以创建未初始化的XHR对象 |
1 | 代表连接状态。已经调用了open方法,准备发送请求 |
2 | 代表发送状态。已经调用了send方法,尚未得到响应数据 |
3 | 代表正在接收状态,已经接收了HTTP响应的头部信息,正在接收响应内容 |
4 | 代表已经加载状态,此时响应内容已经被完全接收 |