JavaScript中DOM操作

93次阅读

共计 2157 个字符,预计需要花费 6 分钟才能阅读完成。

一、JavaScript

基于对象,客户端浏览器、事件驱动的脚本语言。

组成:Dom、Bom、ECMAScript

1.DOM -> 文档对象模型 封装文档操作相关 API
2.BOM-> 浏览器对象模型 封装浏览器操作相关 API
3.ECMAScript-> 核心语法: 常量、变量、数据类型、运算符、流程语句、函数、内置对象等

二、DOM 介绍

  • 什么是 DOM?

    (document object Model)文档对象模型, 用来表示和操作 html 或 xml 文档内容的基础 API. 当页面加载时,浏览器会创建页面的文档对象模型 DOM,而 DOM 模型被构造为对象的树(Dom Html Tree); DOM 包含了所有的 html 标签元素、文本字符串、甚至是 html 注释; 利用 DOM 中的属性和方法,使程序有能力动态的访问和更新文档中的内容、结构以及样式,这样就使得页面的交互性大大增强;
  • DOM 有什么用?

    1. 通过 DOM 操作能够改变页面中所有 HTML 元素
    2. 通过 DOM 操作能够改变页面中所有 HTML 属性
    3. 通过 DOM 操作能够改变页面中所有 CSS 样式
    4. 通过 DOM 操作能够对页面中所有事件做出反应;
  • DOM Tree 介绍

    DOM 把层次中的每一个对象都称之为节点,这个层次结构可以看作树形结构,就如同我们的目录,一个根目 录下有子目录,子目录下面还有子目录。

  • DOM 节点类型与相关属性

    DOM 树中所有的对象都是节点,如: 文档节点、元素节点、属性节点、文本节点、注释节点等;
    节点相关的属性如下:
    nodeName 获取节点的名称,只读
    nodeValue 获取节点内容(适用于文本节点和注释节点)
    nodeType 获取节点类型,只读

  • 节点访问

     节点树中的节点彼此拥有层级关系

    通过属性 nodeType 可以判断节点类型,那么根据节点类型 DOM 树可以分为以下两种:
    1. 包含了所有标签、属性、文本、注释等全部类型的 DOM 树,可以称为节点 (node) 树;
    2. 含标签这一种类型,可以称为元素 (element) 树。元素树状图更加简洁,查找和操作起来也更加快捷。所以,一般除非必要情况,都使用元素树来操作。

    所谓 DOM 树中的节点关系, 就是父子关系、兄弟关系、祖孙关系; 对应节点如下:

    * 父节点(parent node) 父节点可以拥有任意数量的子节点
    * 子节点(child node) 子节点只能拥有一个父节点
    * 兄弟节点(sibling node) 拥有相同父节点的同级节点
    * 根节点(root node) 一个 html 文档一般只有一个根节点,根节点没有父节点,是最上层的节点
    * 祖先节点 包含子节点的节点都可以叫做祖先节点,包括父节点
    * 后代节点 一个节点内包好的所有节点,叫做后代节点,包括子节点

节点的层级访问

* parentNode 获取当前节点的父节点
* childNodes 获取当前元素节点的所有子节点
* firstChild 获取当前元素节点的第一个子节点
* lastChild 获取当前元素节点的最后一个子节点
* previousSibling 获取当前节点的前一个同级节点
* nextSibling 获取当前节点的后一个同级节点

元素的层级访问(Element 元素节点之间的访问)

* firstElementChild、lastElementChild 类似 firstChild 和 lastChild, 返回类型只有 Element 类型,忽略文本、注释、空白节点(IE8 及以下返回 undefined)
* nextElementSibling、previousElementSibling 类似 nextSibling 和 previousSibling, 返回类型只有 Element 类型,忽略文本、注释、空白节点(IE8 及以下返回 undefined)
* children 得到当前元素所有子元素的集合
* childElementCount 子元素的数量
* Element 同样可以访问 parentNode 属性,只不过返回的结果都是 Elment 类型
```

三、DOM 操作

  • 创建节点

    * document.creatElement("tagName") (最常用)创建元素节点,返回一个 element 对象
    * document.creatTextNode("data") 创建新的文本节点,返回新创建的 Text 节点
    * document.createAttribute("attributename")创建一个指定名称的属性,并返回 Attr 对象属性
  • 追加和插入节点

    * element.appendChild(newnode) 在指定节点的最后一个子节点列表之后添加一个新的子节点
    * element.insertBefore(newnode,oldnode) 在已有的子节点前插入一个新的子节点
  • 删除、替换和克隆子节点

    * element.removeChild(node)从子节点列表中删除某个节点,若果删除成功,此方法返回被删除的节点; 如果失败,则返回 null
    * element.replaceChild(newNode,oldNode)实现子节点 (对象) 的替换,返回被替换对象的引用
    * element.remove(index) 用于从下拉列表删除选项(参数 index,规定要删除的选项的索引号)(删除元素本身)
    * 注: 如果不添加参数,可以用于移除当前元素如:document.getElementById('div').remove();

正文完
 0