Introduction to DOM
DOM编程艺术
1 文档树
1.1 概念
Document Object Model
文档对象模型
API 规范
- DOM Core
- DOM HTML
- DOM Style
- DOM Event

1.2 节点遍历

1.3 节点类型

1.4 元素遍历

2 节点操作
2.1 获取节点

2.1.1 getElementById
element = document.getElementById(id)

2.1.2 getElementsByTagName
collection = element.getElementsByTagName(tagName)

2.1.3 getElementsByClassName
collection = element.getElementsByClassName(className)
IE9+

|
|
2.1.4 querySelector querySelectorAll
list = element.querySelector(selector)
list = element.querySelectorAll(selector)
IE8+

2.2 创建节点
element = document.createElement(tagName)
2.3 修改节点
2.3.1 textContent
IE9+

2.3.2 innerText
|
|
2.4 插入节点
2.4.1 appendChild
var aChild = element.createChild(tagName)
element.appendChild(aChild)

2.4.2 insertBefore
var aChild = element.createChild(tagName)
element.insertBefore(aChild,referenceChild)

2.5 删除节点
element.removeChild(aChild)

2.5 innerHTML

问题
- 原来的状态事件不会保留
- 内存泄露(旧浏览器)
- 安全(可能插入脚本)
建议仅用于新节点,节点内容需要是可控经过检查的
3 属性操作
3.1 property
3.1.1 读写
|
|
3.1.2 类型
| property | value | type |
|---|---|---|
| className | ‘u-text’ | String |
| maxLength | 10 | Number |
| disabled | true | Boolean |
| onclick | function .. | Function |
3.1.3 特点
- 取得实用对象
- 通过属性访问,通用性不佳,会出现名字异常,而且扩展性也不好
3.2 get/set Attribute
3.2.1 读写
|
|
3.2.2 类型
| attribute | value | type |
|---|---|---|
| class | ‘u-text’ | String |
| maxLength | 10 | String |
| disabled | true | String |
| onclick | function .. | String |
3.2.3 特点
- 仅仅字符串
- 通用性好
3.3 dataset
- HTMLElement.dataset(上的一个属性)
- data-*属性集
- 元素上保存数据
- 适合自定义属性数据,旧浏览器不兼容
|
|
| dataset | value | type |
|---|---|---|
| id | ‘123’ | String |
| accountName | ‘wq’ | String |
| name | ‘Tom’ | String |
| ‘..’ | String | |
| moblie | ‘..’ | String |
4 样式操作
4.1 style
对应元素内嵌样式

|
|
- 更新一个属性需要一个语句
- 不是熟悉的CSS
- 样式混淆在脚本
4.2 style.cssText
|
|
- 样式混淆在脚本
4.3 更新class
- 一次更新多个元素的样式
4.3 更新stylesheet
4.4 获取实际样式值
window.getComputedStyle(element[,paseudoElt]);
element.currentStyle 针对ie9
|
|

5 事件
5.1 事件流

5.2 事件注册
DOM 2级 为元素分配多个处理函数(而非覆盖)
|
|
5.3 事件类型

鼠标事件


滚轮事件

焦点事件

输入事件

键盘事件

其它事件

5.4 事件代理
5.5 自定义事件和拖放
6 多媒体
|
|
|
|
|
|
|
|

Web Audio API
7 CANVAS

|
|
8 BOM
8.1 属性

8.2 方法

8.3 事件

9 数据通信
9.1 http

9.2 ajax

|
|
10 数据存储
10.1 cookie

|
|
|
|
11 动画
实现方式 - gif, flash, CSS3, JS
三要素 - 对象、属性、定时器

|
|
12 列表操作


13 表单操作
13.1 表单元素




13.2 表单验证

13.3 表单提交

13.4 表单应用

|
|