DOM

83 阅读2分钟

[TOC]

DOM 核心

文档对象模型,是 w3c 组织推荐的处理可拓展标记语言 通过 DOM 接口可以改变网页的内容,结构,样式

元素创建

  • document.write

    会导致页面的重绘,不推荐使用

  • innerHtml

    批量操作时效率高(不适用字符串拼接的情况下)

  • createElement

    更加语义化,逻辑结构清晰

元素增加

  • appendChild

    在元素后面添加

  • insertBefore

    在元素之前添加

元素删除

  • removeChild

修改元素

  • 修改元素属性

    src href title 等

  • 修改普通元素的内容

    innerHTML,innerText

  • 修改表单元素

    value,type,disabled 等

  • 修改元素元素公式

    style, className

查询元素

  • getElementById(不推荐)
  • getElementByClassName(不推荐)
  • getElementByTagName(不推荐)
  • querySelector,querySelectorAll
  • document.body(获取 body)
  • document.documentElement(获取 html 元素)
  • 父元素 parentNode
  • 子元素 children
  • 兄弟元素 previousElementSibling,nextElementSibling

元素设置属性

  • setAttribute
  • getAttribute(可以获取自定义属性)
  • removeAttribute

事件操作

  • element.onclick

    同一个元素只可以注册一个事件

  • element.addEventListenter()

    ie9 以前不支持,可以注册多个监听处理函数 第三个参数为 true 是表示在事件捕获时调用处理函数,false 在事件冒泡阶段处理

  • removeEventListenter()

    解绑事件

DOM 事件流

事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即 DOM 事件流 事件捕获:从上往下(Document->element html -> element body ......) 事件冒泡:从下往上

dom 事件流阶段

  • 捕获阶段
  • 当前目标阶段
  • 冒泡阶段

事件对象

document.onclick = function (event) {};
// event 为一个事件对象,当作形参来看
// 事件对象只有有了事件才会存在,他是系统自动创建的,不需要我们传递参数
// 事件对象是我们事件的一系列相关数据集合

事件对象常见的属性和方法

事件对象属性和方法说明
e.target返回触发事件的对象 (标准)
e.srcElement返回触发事件的对象 (非标准 ie678 使用)
e.type返回事件的类型 比如 click mouseover 不带 on
e.cancelBubble该属性阻止冒泡 ie678 使用
e.returnValue该属性阻止默认事件(默认行为)非标准 ie6-8 使用,比如不让链接跳转
e.parentDefault()该属性阻止默认事件(默认行为)标准
e.stopPropagation()阻止冒泡 标准

事件冒泡的用途

事件委托