JS笔记 ( 二十 ) DOM 的基本操作


 
 

1. DOM 的定义

  • (1) DOM 的全称是 Document Object Model, 即文档对象模型
  • (2) DOM 定义了表示和修改文档所需的方法. Dom 对象即为宿主对象, 由浏览器厂商定义.
    用来操作 html 和 xml 功能的一类对象的集合, 也有人称 DOM 是对 HTML 以及 XML 的标准编程接口

 
 

2. 对节点的增删查改

[1] 查看元素节点

document 代表整个文档

  • 单独的写 document 代表整个文档
  • 若在<HTML>标签之上, 可以再套一层标签的话, 那这层标签则应该是<document>
  • <html>标签代表的是文档的根目录, document 则代表的是整个文档本身,
    因此可以说, document 是整个文档在 js 中的表现形式
     
     

document 对象中的获取 / 查看元素的方法

1) document.getElementById()

  • 作用: 根据元素的 ID 来获取目标元素
     

2) document.getElementsByTagName()

  • 作用: 根据标签名来获取一组元素, 并将元素存入一个数组之中
  • 备注: 存放元素的数组是一个类数组, 若想取得特定对象则在返回的类数组进行操作
  • 示例
    将页面中节点树上的第一个 div 选出来
document.getElementByTagName('div')[0]

选出页面所有元素中的第一个元素

document.getElementByTagName('*')[0]

3) document.getElementsByClassName()

  • 作用: 根据标签内所使用的 class 来获取一组元素, 并将元素存入一个数组之中
    即选择使用了该 class 的元素, 并装入类数组之中

4) document.getElementsByName()

  • 作用: 根据标签内的 name 属性进行选出元素组
  • 备注: 只有部分标签的 name 属性是可以生效的在旧版本浏览器当中
  • 有 name 属性的一些标签: 表单, 表单元素, img, iframe

5) document.querySelector()

  • 作用: 参数可以直接用 css 选择器对元素进行选择

6) document.querySelectorAll()

  • 作用: 与上面方法相同, 但选择的是一组元素, 并符合要求的元素存于类数组当中
  • 备注:
    但这两个方法所选择的元素并不是实时的,
    在页面被动态修改后, 用该方法进行选取元素并不能获取的到新元素,
    同时若旧元素被删除, 用该方法却依旧认为这些元素没被删除, 还可以对其进行获取,
    因此这两个方法并不推荐使用

 
 

[2] 遍历节点树

1) parentNode

  • 定义: 父节点, 最顶端的父节点是#document
  • 作用: 以 Node 对象的形式返回指定节点的父节点, 如果指定节点没有父节点, 则返回 null

2) childNodes

  • 定义: 子节点们
  • 作用: 返回指定节点下的子节点们, 存入一个类数组之中
  • 备注: 子节点包含所有节点类型

3) firstChild 和 lastChild

  • 定义: 第一个 / 最后一个 子节点
  • 作用: 返回指定节点下的第一个 / 最后一个 子节点
     

4) nextSibling 和 previousSibling

  • 定义: 下一个 / 上一个 兄弟节点
  • 作用: 返回指定节点的 下一个 / 上一个 兄弟节点
     
     

[3] 基于元素节点树的遍历

1) parentElement

  • 作用: 返回当前元素的父元素节点
     

2) children

  • 作用: 返回当前元素的元素子节点们

3) childElementCount

  • 作用: 当前元素节点的子元素的个数
  • 备注: 等同于调用 children.length

4) firstElementChild 和 lastElementChild

  • 作用: 返回当前元素下的第一个 / 最后一个元素子节点

5) nextElementSibling 和 previousElementSibling

 
 

[4] 节点的四个属性

1) nodeName

  • 作用: 返回元素的标签名, 以大写形式表示, 只读, 不可修改
     

2) nodeValue

  • 作用: Text 节点或 Comment 节点的文本内容, 可读写

3) nodeType

  • 作用: 返回节点的类型, 只读
  • 节点的类型分类
    (1) 元素节点 -------- 返回值 1
    (2) 属性节点 -------- 返回值 2
    (3) 文本节点 -------- 返回值 3
    (4) 注释节点 -------- 返回值 8
    (5) document -------- 返回值 9
    (6) DocumentFragment -------- 返回值 11

4) attributes

  • 作用: 返回element节点的属性集合, 并将节点的属性全部装入类数组当中
  • 备注: 可以通过调用属性集合去修改节点的属性值, 但属性的名字是修改不了的

5) 节点的一个方法 Node.hasChildNodes()

  • 作用: 判断该节点下有无子节点, 返回 true/false

 
 

[5] DOM 结构树

在这里插入图片描述

  • DOM 元素的最终父类也是 Object
     

注意事项

  • 1) getElementById 方法定义在 Document.prototype 上, 即 Element 节点上不能使用

  • **2) getElementsByTagName 方法定义在 Document.prototype 和 Element.prototype 上 **

  • 3) getElementsByName 方法定义在 HTMLDocument.prototype 上,
    即非 HTML 中的 document 不能使用 (xml, document, Element)

  • 4) HTMLDocument.prototype 定义了一些常用的属性,
    body 和 head 分别指代 HTML 文档中的 <body> <head>标签

  • 5) Document.prototype 定义了 documentElement 属性, 指代文档的根元素,
    在 HTML 文档中, 它总是指代<HTML>元素

  • 6) getElementsByClassName, querySelector, querySelectorAll 这几个方法
    在 Document.prototype 和 Element.prototype 中均有定义

 
 

[6] 增加元素节点

1) document.createElement()

  • 作用: 新增一个元素节点, 参数内写目标元素的标签名即可
  • 示例:
    新增一个 div 节点
document.createElement('div');

2) document.createTextNode()

  • 作用: 创建一个文本节点, 参数内写字符串即可

3) document.createComment()

  • 作用: 创建一个注释节点

4) document.createDocumentFragment()

  • 作用: 创建文档碎片节点

 
 

[7] 插入元素节点

1) ParentNode.appendChild()

  • 作用: 向调用 appendChild 的节点内插入一个子节点, 任何一个元素节点都可调用
  • 备注:
    若使用该方法将页面已存在的内容插入到另一个元素内, 则会实行剪切操作,
    会将该节点剪切并转移到目标节点下, 若被剪切的节点内包含有子节点,
    也会一并将这些子节点转移过去

2) ParentNode.insertBefore(a, b)

  • 作用:
    向调用 insertBefore 的父节点里面插入一个子元素,
    并且这个子元素 a 的插入位置在子元素 b 之前

 
 

[8] 删除元素节点

1) ParentNode.removeChild()

  • 作用: 父节点调用该方法, 将节点内的一个子节点删除
  • 备注: 实际上该方法是将子节点进行剪切并作为返回值返回

2) ChildNode.remove()

  • 作用: 子节点调用该方法, 将自身移除
  • 备注: 这个方法是直接销毁调用节点, 并无返回值

 
 

[9] 删除元素节点

1) ParentNode.replaceChild(new, origin)

  • 作用: 父节点调用该方法, 用新节点去替换旧节点
  • 备注: 旧的节点会被剪切出去, 并作为返回值返回

 
 

[10] 元素节点的一些属性

1) innerHTML

  • 作用: 可以改变一个元素里面的 HTML 内容或取得其 HTML 文本内容
  • 备注:
    若直接对一个元素的 innerHTML 用赋值操作, 新值将会覆盖旧值,
    若想接上新值于旧值之后, 则用 += 操作符即可

2) innerText

  • 作用: 可以取得该元素的文本内容
  • 备注:
    若对一个元素的 innerText 用赋值操作, 如果该元素内除了文本内容外,
    还有其它结构的标签, 直接赋值会将结构全部覆盖掉

 
 

[11] 元素节点的一些方法

1) element.setAttribute()

  • 参数表: ( 属性名 , 属性值 )
  • 作用: 节点调用该方法, 给自身增添新属性

2) element.getAttribute()

  • 参数表: ( 属性名 )
  • 作用: 节点调用该方法, 获取目标属性的值

3) element.removeAttribute()

  • 参数表: ( 属性名 )
  • 作用: 节点调用该方法, 移除目标属性
发布了45 篇原创文章 · 获赞 0 · 访问量 1111

猜你喜欢

转载自blog.csdn.net/leon9dragon/article/details/104031625