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 节点信息2

nodeName

  • 元素节点的 nodeName (节点名称)是标签名称
  • 属性节点的 nodeName 是属性名称
  • 文本节点的 nodeName 永远是 #text
  • 文档节点的 nodeName 永远是 #document

nodeValue

  • 对于文本节点,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(https://www.cnblogs.com/zzq919101/p/6017152.html)

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() 在一行中的指定位置插入一个空的

标签

方法 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 = "测试";​

在dom最前面插入_JavaScript中的DOM相关推荐

  1. dom刷新局部元素_JavaScript中DOM和BOM基础

    BOM部分基础内容 BOM(Broswer Object Model)浏览器对象模型 ,主要用来获取或设置浏览器的属性.行为 ; 使JavaScript可以和浏览器进行交互 ; window 是 BO ...

  2. jQuery 学习笔记一(认识jQuery jQuery选择器 jQuery中的DOM操作)

    第一章 认识jQuery jQuery代码风格 $(document).ready(function(){ //... }); 简化 $(function(){ //... }); jQuery对象转 ...

  3. html5中的dom中的各种节点的层次关系是怎样的

    html5中的dom中的各种节点的层次关系是怎样的 一.总结 一句话总结:Node节点是所有节点的基类,所以都继承它的方法 1.dom提供在js中动态修改html标签的作用 比如增加修改标签等,并且是 ...

  4. jQuery 基础教程 (四)之jQuery中的DOM操作

    一.jQuery 中的 DOM 操作 (1)DOM(Document Object Model-文档对象模型):一 种与浏览器, 平台, 语言无关的接口, 使用该接口可以 轻松地访问页面中所有的标准组 ...

  5. java xml setdoctype_如何在Java中使用DOM将自定义doctype标记添加到带有xhtml标记的xml中?...

    我使用java中的DOM创建了一个XML文档,并将XHTML标记插入到XML文档中.现在我要添加如下doctype: ]> 我试着把它作为一个字符串追加,但没有成功. DocumentBuild ...

  6. 在dom最前面插入_前端性能优化之dom编程

    写在前面 总所周知,在前端的日常里面,采用JS操作DOM节点的情况占据了大多数.虽然现在有MVVM主流框架代替我们做了这些事情,但充分理解在DOM操作各种损耗问题,将有助于让我们更加理解和优化问题. ...

  7. 第三章(jQuery中的DOM操作)

    3.1 DOM 操作分类 ①DOM Core 包括(getElementById() , getElementsByTagName() , getAttribute() , setAttribute( ...

  8. HTML中的 DOM 是什么?有什么作用?

    DOM: Document Object Model : 管理我们的文档   增删改查规则  HTML中的dom方法中的增删查改类似于Java和C中的增删查改: 一些常用的 HTML DOM 方法: ...

  9. 三、jQuery 中的 DOM 操作(超详细)

    文章目录 前言 一. DOM 介绍 二. 查找节点 2.1查找元素节点 2.2查找属性节点 三. 创建节点 3.1.创建元素节点 3.2.创建文本节点 3.3.创建属性节点 四.插入节点 4.1 DO ...

最新文章

  1. 新手零基础学习Python第一步,搭建开发环境!
  2. oracle job如何执行存储过程,oracle定时执行存储过程的job
  3. torch.unsqueeze()和torch.unsqueeze()
  4. 剑指offer:二叉树中和为某一值的路径
  5. RecyclerView onClick
  6. c语言位操作的高级应用
  7. 移动金库模式保护客户信息 覆盖17套关键系统
  8. J2EE 第二阶段项目之JUnit4进行单元测试(五)
  9. 通过反射认识泛型的本质
  10. 分布式系统必读中文版-分布式系统模式-分享
  11. 关于土地分类格式互转、土地利用转移矩阵、变化图谱计算详解
  12. window一键清理垃圾代码
  13. 物流项目介绍示范 有用
  14. 关于无线网络的静态ip与动态ip设置
  15. pythonrq模块_Python RQ 任务队列中的队列 ( Queue )
  16. android 高德地图之poi搜索功能的实现
  17. matlab rloess,R语言利用loess如何去除某个变量对数据的影响详解
  18. Netty | 开启 Linux 平台下的 Native
  19. 计算机四级证书难考吗 考试内容是什么?
  20. 谈谈php里的IOC控制反转,DI依赖注入

热门文章

  1. 求qt如何解决小数计算过程中的精度丢失
  2. 多线程:CopyOnWriteArrayList
  3. 远程计算机 函数不支持,win7远程桌面连接提示要求的函数不受支持怎么办
  4. xrdpdf卡片在哪可下载_暑假学习英语字母,就是这样简单(附可打印字母卡下载)...
  5. php strlen ctf,CTF中的PHP反序列化漏洞简单分析
  6. php业务的适用场景,根据业务场景寻找合适解决方案(PHP)?
  7. linux nfs spec,创建 NFS Ubuntu Linux 服务器卷 - Azure Kubernetes Service | Microsoft Docs
  8. php seaslog安装,浅谈win10下安装php seaslog扩展的方法
  9. 辅助驾驶等级_双AMR电机位置传感器,助力自动驾驶安全出行
  10. 苹果app商品定价_【知乎问答】苹果 App Store 新推出的 1 元或 3 元定价对开发者有什么影响?...