JavaScript核心之DOM概述

目录

1 DOM概念

1.1 Document(文档)

1.2 Object(对象)

1.3 Model(模型)

2 DOM分层以及图示

2.1 各个节点的介绍

2.1.1 根节点

2.1.2 父节点

2.1.3 子节点

2.1.4 兄弟节点

2.1.5 后代

2.1.6 叶子节点

2.2 节点类型

2.2.1 元素节点

2.2.2 文本节点

2.2.3 属性节点

3 DOM对象节点属性

4 在一个页面添加任意节点

4.1 添加任意节点的代码

4.2 添加任意节点的代码的优化

5 与DHTML相对应的DOM


1 DOM概念

DOM是document object model(文档对象模型)的缩写,它是由w3c(world wied web (万维网)委员会)定义的

1.1 Document(文档)

创建一个网页并将该网页添加到web中,dom就会根据这个网页创建一个文档对象。如果没有document(文档),dom也就无从说起

1.2 Object(对象)

对象是一个独立的数据集合,如文档对象,即是文档中元素与容的数据集合。与某个特定对象相关联的变量称为这个对象的属性,可以通过某个特定对象去调用的函数被称为这个对象的方法。

1.3 Model(模型)

模型代表将文档对象表示为树状模型,在这个树状模型中,网页中的各个元素与内容表现为一个相互连接的节点

DOM是访问和操作web页面的接口,使用该接口可以访问页面中其他标准组件。dom解决了JavaScript与JScript之间的冲突,给开发者定义了一个标准的方法,使他们来访问站点中的数据,脚本和表现层对象

2 DOM分层以及图示

文档对象模型采用的分层结构为树形结构,以树节点的方式表示文档中的各种内容,如下以简单代码,来说明:

<html>
<head>
<title>标题内容</title>
</head>
<body>
<h3>三号标题</h3>
<b>加粗内容</b>
</body>
</html>

文档的层次结构图:

上图看出,在dom中,每一个对象都可以称为一个节点(node)

2.1 各个节点的介绍

2.1.1 根节点

在最顶层的<html>节点,称为根节点。

2.1.2 父节点

一个节点之上的节点是该节点的父节点(parent)。例如:<html>是《head》和《body》父节点,《head》是《title》的父节点

2.1.3 子节点

位于一个节点之下的节点就是该节点的子节点。例如《head》和《body》是《html》的子节点,《title》是《head》子节点

2.1.4 兄弟节点

如果多个节点在同一个层次,并拥有者相同的父节点,这几个节点就是兄弟节点(sibling),例如:《head》和《body》就是兄弟节点

2.1.5 后代

一个节点的子节点的结合可以称为是该节点的后代(descendant),例如:《head》和《body》就是《html》的后代

2.1.6 叶子节点

在树形结构最底部的节点称为叶子节点。例如:“标题内容”,“3号标题”和“加粗内容”都是叶子节点

2.2 节点类型

主要有3种类型的节点

2.2.1 元素节点

在html中<body>,<p>,<a>等一系列标记,是这个文档的元素节点,元素节点组成了文档模型的语义逻辑结构

2.2.2 文本节点

包含在元素节点中的内容部分,如<p>标签中的文本等。一般情况下,不为空的文本节点都是可见并呈现于浏览器中的

2.2.3 属性节点

元素节点的属性,如<a>标签的href属性与title属性等,一般情况下,大部分属性节点都是隐藏在浏览器背后,并且是不可见的。属性节点总是被包含在元素节点当中

3 DOM对象节点属性

DOM常用的节点属性

属性 说明
nodeName 节点的名称
nodeValue 节点的值,通常只应用与文本节点
nodeType 节点类型
parentNode 返回当前节点的父节点
childNodes 子节点列表
firstChild 返回当前节点的第一个子节点
lastChild 返回当前节点的最后一个子节点
previousSibling 返回当前节点的前一个兄弟节点
nextSibling 返回当前节点的后一个兄弟节点
attributes 元素的属性列表

其中nodetype:节点的类型可取值为:

类型 数值 节点名 说明
元素(element) 1 标记 任何HTML或xml的标记
属性(attribute) 2 属性 标记中的属性
文本(text) 3 #text 包含标记中的文本
注释(comment) 8 #comment HTML的注释
文档(document) 9 #document 文档对象
文档类型(documentType) 10 DOCTYPE DTD规范

4 在一个页面添加任意节点

4.1 添加任意节点的代码


function dc(){
 var aText=["第一个节点","第二个节点","第三个节点","第四个节点","第五个节点","第六个节点"];
for (var i =0;i<aText.length;i++){
     var ce= document.createElement("b");
     var cText=document.createTextNode(aText[i]);
     ce.appendChild(cText);
     document.body.appendChild(ce);
}
}
dc();

注意:上例中使用appendChild()方法,将节点添加到页面中。由于appendchild()方法在每一次添加新的节点时都会刷新页面,会使浏览器显得十分缓慢。这里可以通过使用createDocumentFragment()(创建碎片文档)来解决这个问题,使用了createDocumentFragment()方法只会刷新一次页面的形式中动态添加多个<p>节点

4.2 添加任意节点的代码的优化

function dc(){
 var aText=["第一个节点","第二个节点","第三个节点","第四个节点","第五个节点","第六个节点"];
var cdf= document.createDocumentFragment();//创建文件碎片节点
for (var i =0;i<aText.length;i++){
     var ce= document.createElement("b");
     var cb=document.createElement("br");
     var cText=document.createTextNode(aText[i]);
     ce.appendChild(cText);
     cdf.appendChild(ce);
     cdf.appendChld(cb);
  }
  document.body.appendChild(cdf);
}
dc();

5 与DHTML相对应的DOM

主要是通过innerHTML,innerText,outerHTML,outerText,

注意:innerHTML属性被大多浏览器支持,但是innerText,outerHTML,outerText,属性只有IE浏览器才支持

innerText与innerHTML属性功能类似,只是该属性只能声明元素包含的文本内容,即使指定的是HTML文本(包含有HTML标签),他也会认为普通文本,而原样输出。

outerHTML和outerText属性与innerText与innerHTML属性类似,只是outerHTML和outerText属性替换的是整个目标的节点,也就是说这两个属性还会对元素本身进行修改

猜你喜欢

转载自blog.csdn.net/u012060033/article/details/89763813
今日推荐