在dom最前面插入_JavaScript中的DOM

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 访问节点

59dc044cafb86603462c2740896de0ea.png

访问节点兼容处理

b1b00782c3e24099a942916e3cce98fb.png

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 操作节点的属性

8c5007ac29b86b7cc077ff7d43af13db.png

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:

60d176911a6d02e4290e44fb8d4b561f.png

结果1:

1a07fe12b6f186f294e4bc1c46b71ba1.png

代码2:

b5e743e4641db43f9b4ea912658ba700.png

结果2:

314580cb2f590598550dca73add9bce2.png

代码3:

309cc09a247117d29c3f3638b265e481.png

结果3:

e3b1164f5cf90eafec7085590048424d.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当代最值得收藏的画家作品_当代最具潜力和收藏价值的十大画家

原标题:当代最具潜力和收藏价值的十大画家当代从事绘画的人成千上万,哪些名家作品值得收藏?当前都有哪些“潜力股”,相关专家综合市场分析,纯从艺术水准上列出值得收藏的“潜力股”,供爱好书画收藏的各界人…

mysql union all 别名_mysql union和union all

如下先创建2个表,aa bb.CREATE table aa(uid int(20) not null,name VARCHAR(30) not null)engineinnodb default charsetutf8mb4 COLLATE utf8mb4_general_ci;INSERT INTO aa(uid, name) VALUES (10, 张芳);INSERT INTO aa(uid, name) VALUES (11, 王凯);INSERT IN…

ci框架 乱码 mysql_mysql容器乱码问题

在docker-compose.yml文件中定义mysql导入utf-8的万国码services:mysql:image:mysql:5.7# command: [--character-set-serverutf8mb4, --collation-serverutf8mb4_unicode_ci]volumes:-./data/docker/mysql:/var/lib/mysql-./mysql/:/docker-entrypoint-initdb.d/-./conf/mys…

mysql分表 查询 优化_MySQL性能管理及架构(查询优化、分库分表)一遍文章搞定...

相关配置参数:slow_query_log # 启动停止记录慢查日志,慢查询日志默认是没有开启的可以在配置文件中开启(on)slow_query_log_file # 指定慢查日志的存储路径及文件,日志存储和数据从存储应该分开存储long_query_time # 指定记录慢查询日志SQL…

mysql临时表 清空_在数据库中临时表什么时候会被清除呢

展开全部我们仍使用 实验 05 中的环境,略去准备数据的过程。我们仍然使用两个会话,62616964757a686964616fe59b9ee7ad9431333433646439一个会话 run,用于运行主 SQL;另一个会话 ps,用于进行 performance_schema 的观察…

python医学图像分割_基于cv2的医学图像分割

例如,图像如下所示:import cv2import numpy as npimg cv2.imread("mdb168.pgm",0)import matplotlib.pyplot as pltplt.imshow(img, cmap"gray")我想删除图像中所有的伪影和不必要的部分。在为此,我首先对图像进行二值化…

ubuntu下使用python将ppt转成图片_Ubuntu下使用Python实现游戏制作中的切分图片功能...

本文实例讲述了Ubuntu下使用Python实现游戏制作中的切分图片功能。分享给大家供大家参考,具体如下:why拿到一个人物行走的素材,要用TexturePacker打包。TexturePacker打包后,助于游戏加载图片效率,且比较好管理。目前得…

世上最简单的mysql_mysql这样学最简单|基本操作上

这是数据库系列的第一篇文章,主要是对mysql的基本操作有一个了解。本系列的教程会先从基础出发,逐步过渡到优化。一、前提在这里我们不会从如何去安装数据库开始讲起,而是在安装完之后从操作数据库开始,文中所有的代码均在我自己的…

zabbix4.0添加mysql报警_Zabbix4.0系统告警“Zabbix server is not running”

第一步: 查看系统日志,进一步确认原因1 cat /var/log/zabbix/zabbix_server.log问题出现在数据库。第二步 数据库确认1 mysql -u root -p #root用户登陆数据库如果登录不成功,就看一下登录密码是否正确以及zabbix用户是否有权限登录数据库。1…

影响索引的mysql函数_mysql索引对排序的影响实例分析

本文实例讲述了mysql索引对排序的影响。分享给大家供大家参考,具体如下:索引不仅能提高查询速度,还可以添加排序速度,如果order by 后面的语句用到了索引,那么将会提高排序的速度。测试1、创建测试表:t15表…

php如何对 mysql 中text类型拆分存入一个数组_PHP递归实现无限级分类,可选返回字符串和数组...

正 文:在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。递归,简单的说就是一段程序代码的重复调…

python 开发框架 ant_Golang/python语言开发的分布式游戏服务器框架 mqant

软件介绍mqantmqant 是一款基于 Golang 语言的简洁,高效,高性能的分布式游戏服务器框架,研发的初衷是要实现一款能支持高并发,高性能,高实时性的游戏服务器框架,也希望 mqant 未来能够做即时通讯和物联网方…

java w3c xml_org.w3c.dom(java dom)解析XML文档

首先来了解点Java DOM 的 API:1.解析器工厂类:DocumentBuilderFactory创建的方法:DocumentBuilderFactory dbf DocumentBuilderFactory.newInstance();2.解析器:DocumentBuilder创建方法:通过解析器工厂类来获得 DocumentBuilder…

mysql migrations_Code First Migrations更新数据库结构(数据迁移)

背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新后,…

java 机器码 虚拟机_Java虚拟机:源码到机器码

无论什么语言写的代码,其到最后都是通过机器码运行的,无一例外。那么对于 Java 语言来说,其从源代码到机器码,这中间到底发生了什么呢?这就是今天我们要聊的。如下图所示,编译器可以分为:前端编…

docker 远程连接 文件看不到_开发提升十倍生产力: IDEA 远程一键部署 Spring Boot 到 Docker...

一、开发前准备二、新建项目《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot 实现原理与源码解析…

java多台_Java 多态

Java中多态的特性,在学习中就是很难懂,比较抽象的概念。学的时候就犯糊涂,但日后会发现,基础在日常工作的理解中占有重要的角色。下面,我将用一个代码实例,回忆和巩固多态的概念和存在的意义。理解多态&…

快准牌电脑发软件_做自媒体必备技能,视频剪辑软件排名(精品篇)

作者:老马引流定位:专业专注引流推广0X00 前言毫不客气的说,视频正日益成为社交媒体和营销的重要组成部分,有越来越多的人参与到视频剪辑当中来,而其中最为关键的就是视频剪辑软件。而市面上的视频剪辑软件当然也是五花…

ad电阻原理图_【雕爷学编程】Arduino动手做(2)---光敏电阻模块

【Arduino】108种传感器模块系列实验(02)实验二:光敏电阻传感器模块我手里这块是三针版的,挺秀气吧光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应。光照愈强,阻值就…

怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 第 131 号问题:分割回文串...

题目来源于 LeetCode 上第 131 号问题:分割回文串。题目难度为 Medium,目前通过率为 45.8% 。题目描述给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入题目解析首先&#xff0…