龙空技术网

JavaScript中的DOM

进击的代码 74

前言:

现在姐妹们对“javascripthtmldom”都比较关怀,你们都想要了解一些“javascripthtmldom”的相关知识。那么小编也在网络上汇集了一些有关“javascripthtmldom””的相关资讯,希望兄弟们能喜欢,同学们快快来了解一下吧!

1. 关于DOM

文档对象模型(DocumentObject Model),是基于浏览器编程的一套API接口,W3C出台的推荐标准,每个浏览器都有一些细微的差别,其中以Mozilla(火狐)的浏览器最与标准接近。

通过 DOM,可以访问所有的 HTML元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。

2. 动态改变文档内容

要想对页面的内容做修改,需要如下方式来操作:

​ a.解析文档(如HTML)并生成DOM树

​ b.通过DOM提供的属性和方法,获取或改变文档的内容

2.1 DOM的节点

HTML 文档中的每个成分都是一个节点(Node)

DOM 是这样规定的:

整个文档是一个文档节点每个 HTML 标签是一个元素节点包含在 HTML 元素中的文本是文本节点每一个 HTML 属性是一个属性节点注释属于注释节点 2.1.1 节点间的关系

节点彼此都有等级关系

父节点、子节点、兄弟节点(同级节点)

2.2 DOM标准接口

W3C提供了三类DOM标准接口,如下:

​ a. 核心DOM,适用于各种结构化文档

​ b.HTML DOM,专用于HTML文档

c. XML DOM,专用于XML文档

3. 核心DOM操作3.1 访问节点访问节点兼容处理getElement系列方法

使用getElement系列方法来访问指定的节点

getElementById():返回对拥有指定id的第一个对象的引用getElementsByTagName():返回带有指定名称的对象集合getElementsByClassName():返回指定的类选择器的集合getElementsByName():返回带有指定名称的对象集合(注意不是所有标签都有name属性) 3.1.1 节点信息1

每个节点都拥有包含节点某些信息的属性

nodeName(节点名称)nodeValue(节点值)nodeType(节点类型) 3.1.2 节点信息2nodeName元素节点的 nodeName (节点名称)是标签名称属性节点的 nodeName 是属性名称文本节点的 nodeName 永远是 #text文档节点的 nodeName 永远是 #documentnodeValue对于文本节点,nodeValue 属性包含文本对于属性节点,nodeValue 属性包含属性值nodeType元素 1 、属性 2、 文本 3、 注释 8、 文档 9上面不同的数值代表不同的节点类型3.2 创建和操作节点3.2.1 主要方法

方法 说 明

createElement( tagName) 创建一个名为tagName的新元素节点,用法Document.createElement(标签名)

ANode.appendChild( BNode) 把子节点B追加到父节点A里面的末尾

insertBefore( ANode,BNode ) 把A节点插入到B节点之前

Node.loneNode(deep) deep为true则复制该节点以及该节点的所有子节点,为false则只复制该节点和其属性

3.2.2 操作节点的属性

3.3 删除和替换节点

方法 说 明

removeChild( node) 删除指定的节点(用父级元素去调用它)

replaceChild( newNode, oldNode) 用newNode来替换oldNode()

3.3.1 removeChild()示例代码如下

var tb = document.getElementById("tb");//先找到要删除的节点,这里要删除一行var tr = tb.lastChild.lastChild;//这里也需要父节点操作子节点tr.parentNode.removeChild(tr);​​
3.3.2 replaceChild()示例代码
var tb = document.getElementById("tb");var tr = document.createElement("tr");var td1 = document.createElement("td");var td2 = document.createElement("td");td1.innerHTML = "我的内容1";td2.innerHTML = "我的内容2";tr.appendChild(td1);tr.appendChild(td2);//父节点操作子节点//两个参数,第一个表示新节点,第二个表示旧节点,这里用心节点替换旧节点tb.lastChild.replaceChild(tr,tb.lastChild.firstChild);​
3.4 其他

id,value等操作

innerHTML和innerText的区别

如果内容中有html标签,使用innerHTML时,内容中的html标签会被解析出来,而使用innerText时,html只会被当作文本显示出来

元素.style.样式

className

3.5 示例

代码1:

结果1:

代码2:

结果2:

代码3:

结果3:

4. HTML DOM操作

​ HTML文档中的每个节点,都是DOM对象,每个DOM对象都有属于自己的属性和方法.

​ HTML DOM在操作表格时,我们把一个表格看成是一个table对象,那么一个table对象是由若干个行对象(row)组成的,而其中每个行对象又是由若干个单元格对象(cell)组成的

​ Table对象可以操作行对象,行对象可以操作单元格对象

4.1 table表格对象

类别 名称 描述

属性 rows[] 返回包含表格中所有行的一个数组

方法 insertRow() 在表格中插入一个新行

方法 deleteRow() 从表格中删除一行

4.2 row行对象

类别 名称 描述

属性 cells[] 返回包含行中所有单元格的一个数组

属性 rowIndex 返回该行在表中的位置

方法 insertCell() 在一行中的指定位置插入一个空的<td>标签

方法 deleteCell() 删除行中指定的单元格

另,对于单元格对象,还有cellIndex可以获取单元格的索引号

例如,这里需要在表格的末尾追加一行:

var tb = document.getElementById("tb");//添加之前,tb中共有多少个tr,返回的是一个数组var alltrs = tb.lastChild.rows;//先在tb中添加一行,此时行虽然添加了,但行中没有任何内容//此时传递的参数了,是一个添加的位置,是tr的索引号,这里是在末尾追加var newtr = tb.insertRow(alltrs.length);//再在新添加的行中,添加单元格对象var td1 = newtr.insertCell(0);var td2 = newtr.insertCell(1);//然后还需要往td中添加内容td1.innerHTML = "html dom";td2.innerHTML = "测试";​

标签: #javascripthtmldom