DOM部分
DOM:Document Object Model :
文档对象模型
文档:HTML
页面
文档对象:页面中的元素
文档对象模型: 为了让程序(JS)去操作页面中的元素
DOM
树由节点构成
1 | 节点种类:元素节点、文本节点和属性节点 |
DOM
(文档对象模型)是HTML
和 XML
的应用程序接口(API)。DOM
代表着被加载到浏览器窗口里的当前网页:浏览器向我们提供了当前网页的地图(或者说模型),而我们可以通过js去读取这张地图。
BOM
主要处理浏览器窗口和框架,不过通常浏览器特定的 JavaScript
扩展都被看做BOM
的一部分。这些扩展包括:1
2
3
4
5
6弹出新的浏览器窗口
移动、关闭浏览器窗口以及调整窗口大小
提供 Web 浏览器详细信息的定位对象
提供用户屏幕分辨率详细信息的屏幕对象
对 cookie 的支持
IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象
window
对象对应着浏览器窗口本身,这个对象的属性和方法通常被称为BOM
DOM包含:window
1 | Window对象包含属性:document、location、navigator、screen、history、frames |
从window.document
已然可以看出,DOM
的最根本的对象是BOM
的window
对象的子对象。
区别:DOM
描述了处理网页内容的方法和接口,BOM
描述了与浏览器进行交互的方法和接口。
根据W3C DOM规范,DOM是HTML与XML的应用编程接口(API),DOM将整个页面映射为一个由层次节点组成的文件。有1级、2级、3级共3个级别。
将HTML代码分解为DOM节点层次图:
1 | HTML文档可以说由节点构成的集合,DOM节点有: |
查找元素
W3C提供了比较方便的定位节点的方法和属性,如下所示:
方法 | 说明 |
---|---|
getElementById() | 获取特定ID元素的节点 |
getElementsByTagName() | 获取相同元素的节点列表 |
getElementsByName | 获取相同名称的节点列表 |
getAttribute() | 获取特定元素节点属性的值 |
setAttribute() | 设置特定元素节点属性的值 |
removeAttribute() | 移除特定元素节点属性 |
元素节点属性
属性 | 说明 |
---|---|
tagName | 获取原酸节点的标签名 |
innerHTML | 获取元素节点的内容 |
nodeName | 返回一个字符串,其内容是节点的名字 |
nodeType | 返回一个整数,这个数值代表给定节点的类型 |
nodeValue | 返回给定节点的当前值 |
遍历节点树
节点 | 说明 |
---|---|
childNodes | 返回一个数组,这个数组由给定元素的子节点构成 |
firstChild | 返回第一个子节点 |
lastChild | 返回最后一个子节点 |
parentNode | 返回一个给定节点的父节点 |
nextSibling | 返回给定节点的下一个子节点 |
previousSibling | 返回给定节点的上一个子节点 |
DOM操作
DOM操作 | 说明 |
---|---|
creatElement(element) | 创建一个新的元素节点 |
creatTextNode() | 创建一个包含给定文本的新文本节点 |
appendChild() | 指定节点的最后一个节点列表后添加一个新的子节 |
insertBefore() | 将一个给定节点插入到一个给定元素节点的给定子节点的前面 |
removeChild() | 从一个给定元素中删除子节点 |
replaceChild() | 把一个给定父元素里的一个子节点替换为另外一个节点 |
DOM
通过创建树来表示文档,描述了处理网页内容的方法和接口,从而使开发者对文档的内容和结构具有空前的控制力,用DOM API
可以轻松地删除、添加和替换节点。
DOM事件
1 | DOM同时两种事件模型:冒泡型事件和捕获型事件 |
事件处理/监听函数
DOM0级事件绑定
1 | oDiv.onclick=function(){ |
- 这种事件监听方法,只能监听冒泡过程。事件发生顺序:最内层→最外层
- 用这种方法绑定的监听,this指的是触发这个事件的元素,无浏览器兼容问题
DOM2级事件绑定
addEventListener(“事件”,函数,Boolean); //绑定
removeEventListener(“事件名”,函数,Boolean)//解除
- 第一个参数:事件名不用写on。click、mouseover、mouseout
- 第二个参数:可以是匿名函数,也可以是有名函数
- 第三个参数:true表示监听捕获,false表示监听冒泡阶段
IE的事件绑定
- IE6、7、8不支持addEventListener()方法;
oDiv.attachEvent(“onclick”,函数) //只能监听冒泡
detachEvent(事件名,函数) //解除绑定
- 第一个参数必须写on
BOM部分
BOM
的核心是window
,而window
对象又具有双重角色,它既是通过js访问浏览器窗口的一个接口,又是一个Global
(全局)对象。这意味着在网页中定义的任何对象,变量和函数,都以window
作为其global
对象。
document对象
1 | document对象:实际上是window对象的属性,document == window.document为true,是唯一一个既属于BOM又属于DOM的对象 |
location对象
1 | location对象:表示载入窗口的URL,也可用window.location引用它 |
navigator对象
1 | navigator对象:包含大量有关Web浏览器的信息,在检测浏览器及操作系统上非常有用,也可用window.navigator引用它 |
screen对象
1 | screen对象:用于获取某些关于用户屏幕的信息,也可用window.screen引用它 |
window对象方法
方法 | 描述 |
---|---|
alert() | 显示带有一段消息和一个确认按钮的警告框。 |
blur() | 把键盘焦点从顶层窗口移开。 |
clearInterval() | 取消由 setInterval() 设置的 timeout。 |
clearTimeout() | 取消由 setTimeout() 方法设置的 timeout。 |
close() | 关闭浏览器窗口。 |
confirm() | 显示带有一段消息以及确认按钮和取消按钮的对话框。 |
createPopup() | 创建一个 pop-up 窗口。 |
focus() | 把键盘焦点给予一个窗口。 |
moveBy() | 可相对窗口的当前坐标把它移动指定的像素。 |
moveTo() | 把窗口的左上角移动到一个指定的坐标。 |
open() | 打开一个新的浏览器窗口或查找一个已命名的窗口。 |
print() | 打印当前窗口的内容。 |
prompt() | 显示可提示用户输入的对话框。 |
resizeBy() | 按照指定的像素调整窗口的大小。 |
resizeTo() | 把窗口的大小调整到指定的宽度和高度。 |
scrollBy() | 按照指定的像素值来滚动内容。 |
scrollTo() | 把内容滚动到指定的坐标。 |
setInterval() | 按照指定的周期(以毫秒计)来调用函数或计算表达式。 |
setTimeout() | 在指定的毫秒数后调用函数或计算表达式。 |