文档对象模型(Document Object Model,简称 DOM),是 W3C 组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口。
W3C 已经定义了一系列的 DOM 接口,通过这些 DOM 接口可以改变网页的内容、结构和样式。
对于JavaScript,为了能够使JavaScript操作HTML,JavaScript就有了一套自己的dom编程接口。
对于HTML,dom使得html形成一棵dom树. 包含 文档、元素、节点。
- 文档:一个页面就是一个文档,DOM中使用document表示
- 节点:网页中的所有内容,在文档树中都是节点(标签、属性、文本、注释等),使用node表示
- 标签节点:网页中的所有标签,通常称为元素节点,又简称为“元素”,使用element表示
关于dom操作,我们主要针对于元素的操作。主要有创建、增、删、改、查、属性操作、事件操作。
1、创建
- document.write() —— 是直接将内容写入页面的内容流,界面加载完成之后,再写入,这样它会导致页面全部重绘
- element.innerHTML —— 是将内容写入某个 DOM 节点,不会导致页面全部重 ,创建多个元素效率更高(不要拼接字符串,采取数组形式拼接),结构稍微复杂
- document.createElement() —— 创建多个元素效率稍低一点点,但是结构更清晰
注意:不同浏览器下,innerHTML 效率要比 creatElement 高
2、增加
- node.appendChild(child) —— 将一个节点添加到指定父节点的子节点的末尾。
- node.insertBefore(child, 指定元素) —— 将一个节点添加到父节点的指定子节点前面。
3、删除
- removeChild(child)
示例: ul.removeChild(ul.children[0]);
4、修改
主要修改dom的元素属性,dom元素的内容、属性, 表单的值等
- 修改元素属性: src、href、title等
- 修改普通元素内容: innerHTML 、innerText
- 修改表单元素: value、type、disabled等
- 修改元素样式: style、className
5、查
主要获取查询dom的元素
- DOM提供的API 方法: getElementById、getElementsByTagName 古老用法 不太推荐
- H5提供的新方法: querySelector、querySelectorAll 提倡
- 利用节点操作获取元素: 父(parentNode)、子(children)、兄(previousElementSibling、nextElementSibling) 提倡
6、属性操作
主要针对于自定义属性:一组元素中(同一个父亲),每个元素他自己不知道自己排行老几,设置自定义属性,来排行。
- element.setAttribute('属性', '值'):设置dom的属性值
- element.getAttribute('属性'):得到dom的属性值
- removeAttribute移除属性
7、事件操作
给元素注册事件: 事件源、事件类型 、事件处理程序