Files
notes_estom/JavaScript/JavaScript/13 Dom.md
2024-01-13 17:25:31 +08:00

7.6 KiB
Raw Blame History

Dom 相关的常用的操作

1 基础操作

五种节点类型

  • 文档是一个文档节点。
  • 所有的HTML元素都是元素节点。
  • 所有 HTML 属性都是属性节点。
  • 文本插入到 HTML 元素是文本节点。are text nodes。
  • 注释是注释节点。

DOM的组成

  • 核心 DOM - 针对任何结构化文档的标准模型
  • XML DOM - 针对 XML 文档的标准模型
  • HTML DOM - 针对 HTML 文档的标准模型

节点关系

  • 在节点树中,顶端点被称为根
  • 每个节点都有父节点
  • 一个节点可拥有任意数量的子节点
  • 同胞是拥有相同父节点的结点

节点操作

可以通过JS等脚本语言对HTML_DOM进行访问

所有的HTML元素都被定义为对象而编程接口则是对象的方法和对象的属性

方法是能够执行的动作(添加或修改元素节点)

属性是能够获取或设置的值(节点的名称或内容)

2 文档节点

document object

model文档对象模型将HTML文档呈现为带有元素、属性和文本的树结构成为节点树。三种DOM结点;

  • 元素节点:<html\>\<body\>\<p\>(tag)
  • 文本节点:````
  • ```````<script>```
  • 属性节点:元素属性 <a href = "http://">其中href即为元素的属性

713150815405.png

724101446557.png

节点属性

  • nodeName

    • 元素节点的 nodeName 与标签名相同
    • 属性节点的 nodeName 是属性的名称
    • 文本节点的 nodeName 永远是#text
    • 文档节点的 nodeName 永远是#document
  • nodeType

    • 节点类型1->元素节点;
    • 2->属性节点;
    • 3->文本节点
  • nodeValue节点值元素节点返回null属性节点返回属性值文本节点返回文本内容

    • 元素节点的 nodeValue 是 undefined 或 null
    • 文本节点的 nodeValue 是文本自身
    • 属性节点的 nodeValue 是属性的值
  • childNodes返回子节点数组只有元素节点有子节点

  • firstChild返回第一个子节点

  • lastChild返回最后一个子节点

  • nextSibling返回下一个兄弟节点

  • previousSibling返回节点的上一个兄弟节点

  • parentNode返回节点的父节点。

节点方法

document对象的节点方法

  • write():写入内容到文档
  • getElementBYId()返回指定ID的元素
  • getElementsByTagName():返回带有制定标签名的所有元素(是一个数组)
  • get/setAttribute('key', 'value'):返回设置属性节点

其他元素的结点方法:

节点方法 说明
createElenment('tafName') 创建元素节点
createTextNode(text) 创建文本节点
appendChild(o) 在父节点末尾附加子节点
reateDocumentFragment() 创建文档片段
removeChild(oP) 删除节点
replaceChild(newOp,targetOp) 替换节点
insertBefore(newOp,targerOp) 已有的子节点前插入一个新的节点
insertAfter(newOp,targetOp) 已有的子节点后插入一个新的节点
get/setAttribute('key', 'value') 设置或得到属性节点
clonNode(true/false) 复制节点

元素内容

  • innerHTML替换时包括其中的html标签
  • innerText替换时只有其中的文本内容

元素样式

方法:

  • style属性能够创建新的属性并赋值
  • className属性只能改变标签的类属性使用已经有的类来改变标签的属性

语法:

  • object.style.property = new style;
  • object.style.className = "class"

3 页面设置

页面尺寸

宽高尺寸

  • clientWidth / clientHeight窗口的宽度高度
  • scrollWidth / scrollHeight文档内容的高度宽度
  • offsetWidth / offsetHeight文档内容的高度宽度

坐标位置

  • scrollleft / scrollTop滚轴的水平便宜距离垂直偏移距离
  • offsetLeft / offsetTop对象与页面的边距
  • event.clientX / event.clientY事件触发时鼠标指针对窗口的水平垂直坐标(event为时间)

注意事项documentElement是整个节点树的根节点root即html标签document.body也是document能直接调用的属性标签

语法:

  • object.offsetLeft/oobject.offsetTop

4 节点遍历

父子节点

childNode

  • 使用语法elementNode.childNodes

注意事项:空白节点会被浏览器但顾总文本节点

firstChild lastChild

  • 使用语法node.firstChild node.lastChild

parentNode

  • 使用语法:elementNode.parentNode

5 节点操作

主要方法

方法 描述
getElementById() 返回带有指定 ID 的元素。
getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。
getElementsByClassName() 返回包含带有指定类名的所有元素的节点列表。
appendChild() 把新的子节点添加到指定节点。
removeChild() 删除子节点。
replaceChild() 替换子节点。
insertBefore() 在指定的子节点前面插入新的子节点。
createAttribute() 创建属性节点。
createElement() 创建元素节点。
createTextNode() 创建文本节点。
getAttribute() 返回指定的属性值。
setAttribute() 把指定属性设置或修改为指定的值。

属性:

innerHTML //元素节点的文本值

parentNode//元素节点的父节点

childNodes//元素节点的子节点

atrributes//元素节点的属性节点

nodeName属性规定节点的名称只读

nodeValue规定节点的值

nodeType属性返回节点的类型

元素类型 NodeType
元素 1
属性 2
文本 3
注释 8
文档 9

在这里将html中的各个部分解析成节点的概念有助于通过结点树建立节点关系模型非常好而且简单。然后有将html中各个部分定义成对象并且定义了对象的属性和方法能够很轻松的完成对元素的访问和操作。提到对象联系C++中的知识可以知道对象主要包括数据成员和成员函数前者就是对象的属性后者是对象的方法。然后再说一下这里的DOM的理解文档对象模型。简单的说就是讲整个html文档中的所有元素定义成节点和对象的过程并且通过这种定义简化并且系统的表达了对html的访问和操作。

DOM中相关的事件

.onclick=function(){displayDate()};

onclick="displayDate()"

onload="checkCookies()"

onchange="upperCase()"

onmouseover onmouseout

onmousedown onmouseup