JavaScript:nodeType节点/文档碎片对象模型-DcoumentFragment

1伪数组转真数组的方式:

伪数组转真数组的多种方式:

1 Array.from

2 Array.prototype.slice.call(list)

3 [...list]

const list1 = document.getElementsByTagName('p')//检查list1 是不是 Array数组 的实例 --> false --伪数组console.log(list1 instanceof Array) //false--伪数组转变为真数组--的几种方式const list2 = [...list1]const list3 = Array.from(list1)//以下两种方式--原理性质一样const list4 = Array.prototype.slice.call(list1)const list5 = [].slice.call(list1)//console.log(list2 instanceof Array) //trueconsole.log(list3 instanceof Array) //trueconsole.log(list4 instanceof Array) //trueconsole.log(list5 instanceof Array) //true// 将伪数组转为真数组const p1 = Array.from(pNodes);const p2 = Array.prototype.slice.call(pNodes) const p3 = [].slice.call(pNodes)const p4 = [...pNodes]

2nodeType节点:

2. nodeType节点:

页面中所有的东西都可以叫节点, 标签,元素,文本,属性

节点: 标签节点,属性节点,文本节点,他们都是节点,节点是有类型的

标签---->元素(DOM中的叫法)---->标签节点

文本节点:文字内容,空行,回车,空白文本节点

属性节点:标签中的属性和值

文档:整个当前的页面,页面中的标签都有嵌套的关系,一层一层的,

形成了一个树形的的效果,称为:树形结构图,DOM树

获取了一些节点,通过判断该节点的类型,就可以知道获取的节点到底是什么节点!

nodeType属性可以获取当前这个节点的类型

该属性值: 1---标签节点, 2----属性节点, 3----文本节点

 根据id获取当前的div对象---元素---标签对象----标签节点const divNode = document.getElementById('demo')//根据属性的名字来获取当前的属性节点const attrNode = divNode.getAttributeNode('id')//获取div标签中的第一个文本节点const txtNode = divNode.firstChildconsole.log(divNode.nodeType) // 打印 1 标签对象console.log(attrNode.nodeType) // 打印2 属性节点console.log(txtNode.nodeType) //打印3 文本节点

3.文档碎片对象模型-DcoumentFragment

文档碎片对象模型---DcoumentFragment----(高效批量处理多个节点)

案例:通过文档碎片对象,把html中的某些标签的内容进行更新操作

第一种方式:直接获取所有的p标签,通过遍历,修改内部的内容,

即可-----属于直接操作DOM树中的节点--如果说要操作的节点非常的多,

那么这种直接操作DOM树的方式,会令页面出现卡顿的效果,非常的明显

第二种方式:文档碎片对象模型的方式,先获取所有的p标签的父级节点,在拿到内部所有的子级节点,

全部的放在文档碎片对象中,在内存中对文档碎片对象中的所有节点进行操作(没有直接操作DOM树),

操作后结果再给当前父级节点即可----效率要高于直接操作DOM树的效率,卡顿没有之前的方式那么明显

//1获取div父级节点const divObj = document.getElementById('demo')//2创建文档碎片对象const fragment = document.createDocumentFragment()// 3. 把div父级节点中所有的子级节点全都放在文档碎片对象中(丢进了这个文档碎片对象中---(剪切))--内存中// 没有直接操作DOM树,都是在内存中完成,内存中的这些节点可以看成是虚拟的DOMlet child//while 遍历操作while (child = divObj.firstChild){// 把每个子节点扔进到文档碎片对象中fragment.appendChild(child)}// 4. 遍历文档碎片对象中所有的子节点,修改内容fragment.childNodes.forEach(node => {//改变每个节点的显示内容node.innerHTML = '鹅鹅鹅,曲项向天歌,白毛浮绿水,红掌拨清波'})//5. 把文档碎片对象放在父级节点div中即可divObj.appendChild(fragment)

使用了文档碎片对象模型的方式在内存中操作节点,并不是直接操作DOM树,可以理解为是虚拟DOM的操作

欢迎关注我的原创文章:小伙伴们!我是一名热衷于前端开发的作者,致力于分享我的知识和经验,帮助其他学习前端的小伙伴们。在我的文章中,你将会找到大量关于前端开发的精彩内容。

学习前端技术是现代互联网时代中非常重要的一项技能。无论你是想成为一名专业的前端工程师,还是仅仅对前端开发感兴趣,我的文章将能为你提供宝贵的指导和知识。

在我的文章中,你将会学到如何使用HTML、CSS和JavaScript创建精美的网页。我将深入讲解每个语言的基础知识,并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者,我的文章都能够满足你的学习需求。

此外,我还会分享一些关于前端开发的最新动态和行业趋势。互联网技术在不断发展,新的框架和工具层出不穷。通过我的文章,你将会了解到最新的前端技术趋势,并了解如何应对这些变化。

我深知学习前端不易,因此我将尽力以简洁明了的方式解释复杂的概念,并提供一些易于理解的实例和案例。我希望我的文章能够帮助你更快地理解前端开发,并提升你的技能。

如果你想了解更多关于前端开发的内容,不妨关注我的原创文章。我会不定期更新,为你带来最新的前端技术和知识。感谢你的关注和支持,我们一起探讨交流技术共同进步,期待与你一同探索前端开发的奇妙世界!

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

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

相关文章

【随笔】Git 高级篇 -- 撤销变更 reset | revert(十四)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

Cuda编程-NPP库

Cuda编程先前有过研究,现在记录下Cuda相关的库使用 目录 0.参考文档1.NPP简介1.1 头文件1.2 库文件1.3 编译时链接关系1.4 NPP函数的命名方式1.5 General Conventions 一般约定1.6 Image Processing Conventions 图像处理约定 2.举例:NPP实现YUV转BGR2.1…

基于Android的记单词App系统的设计与实现

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

【服务器部署篇】Linux下安装Docker容器

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

SqlServer占用CPU过高情况排查

一、问题描述 反馈SQLServer中出现CPU使用率过高有许多可能原因,但常见的原因如下最为常见: 由于以下情况,表或索引扫描导致的高逻辑读取: 过期统计信息缺少索引设计不佳的查询工作负载增加 针对此类问题,微软有一套…

MyBatis如何实现分页

文章目录 MyBatis分页方式对比使用数据库厂商提供的分页查询语句通过自定义 SQL 实现分页逻辑1. 使用 RowBounds 实现分页2. 使用 PageHelper 实现分页 数组分页使用 MyBatis-Plus 进行分页MyBatis物理分页和逻辑分页MyBatis 手写一个 拦截器分页 在 MyBatis 中实现分页通常有两…

数据恢复软件能不能恢复已经删除的监控视频

随着安防意识的日益增强,监控视频已成为众多场所不可或缺的安全保障。然而,由于各种原因,我们可能会不小心删除了一些重要的监控视频。面对这种情况,许多人都会想到使用数据恢复软件来尝试找回这些丢失的视频。那么,数…

堆放砖块-第12届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第47讲。 堆放砖块&#xf…

[xboard]real6410-3 S3C6410光盘资料与功能测试

文章目录 1 real6410官方资源1网盘分享2 镜像测试uboot烧录uboot信息应用功能测试2 ok6410a资源网盘分享3 友善6410资源网盘分享4 友坚网盘分享参考1 real6410官方资源 1网盘分享 real6410 v6.2 链

Redis 常用的基本命令

🔥博客主页:fly in the sky - CSDN博客 🚀欢迎各位:点赞👍收藏⭐️留言✍️🚀 🎆慢品人间烟火色,闲观万事岁月长🎆 📖希望我写的博客对你有所帮助,如有不足,请指正&#…

群联AI云防护中的防盗链技术原理及其作用探析---

一、引言 随着云计算和AI技术的快速发展,云防护方案已经成为现代企业防范网络攻击和保护数字资产的重要手段之一。群联科技作为存储解决方案和技术服务的领导者,已将其AI技术应用于云端防护系统中,并特别强化了防盗链功能,以帮助…

MQTT协议特点及数据包结构详解(值得珍藏)

点击下载《MQTT协议特点及数据包结构详解(值得珍藏)》 1. 前言 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。 MQTT最大优点在…

SVD图像处理(MATLAB)

使用SVD处理图像模拟演示 参考文献 https://github.com/matzewolf/Image_compression_SVD/blob/master/svd_compress.m MATLAB代码 clc; clearvars; close all;A_orgimread("lena256.bmp"); compr20; A_orgdouble(A_org);A_red svd_compress( A_org, compr ); s…

Android 内存泄露与解决方案

内存泄漏原因 内存泄漏是指程序在申请内存后,无法被释放或归还给系统的现象。在Android中,内存泄漏导致的后果会使得应用Crash。 常见的内存泄漏场景有:全局集合类强引用没清理会造成内存泄漏(特别是static修饰的集合)、静态成员变量、单例…

yolov7的改进工地安全帽佩戴检测系统-协同双注意力机制CDAM2(教程+代码)

研究的背景和意义 随着工业化和城市化的快速发展,建筑工地的安全问题日益凸显。在建筑工地中,工人的安全是至关重要的,而工地安全帽的佩戴是保障工人安全的重要措施之一。然而,由于工地环境复杂多变,工人的佩戴情况往…

为什么企业都用企微文档?真的好用吗?

现在很多企业都在使用企微文档,还没开始使用的企业难免会产生疑惑,企微文档真的好用吗?其实企业选择使用企微文档的原因有很多,主要的原因是企微文档能够满足企业在文件管理和协作方面的多种需求,从而提高办公效率。 下…

未来客服行业的趋势与展望:构建更高效、个性化的客户体验

客服行业是商业领域中的重要组成部分,它直接影响着企业的品牌形象和客户满意度。随着科技的飞速发展,客服行业也正在经历深刻的变革。今天将描绘未来客服行业的发展趋势,帮助我们更好地理解这个行业的未来走向。 1. 人工智能和机器学习的广泛…

汽车充电桩主板在出厂前需要做哪些检测?

充电桩主板作为核心组件承载着充电桩的关键功能,其性能和稳定性直接影响着用户充电体验、桩企产品合规和市场竞争力,以及主板厂商的品牌知名度。因此,对充电桩主板进行全面的测试尤为重要。 下面将详细介绍充电桩主板检测的内容,包…

信息素养与终身学习解锁题目搜索之道的新引擎【文末送书】

文章目录 信息素养:搜索前的准备终身学习:搜索后的深化新引擎的构建与运行 搜索之道:信息素养与终身学习的新引擎【文末送书】 随着互联网的快速发展和信息技术的日益成熟,搜索已经成为获取知识和信息的主要途径之一。然而&#x…

STM32CubeIDE基础学习-舵机控制实验

STM32CubeIDE基础学习-舵机控制实验 文章目录 STM32CubeIDE基础学习-舵机控制实验前言第1章 硬件介绍第2章 工程配置2.1 基础工程配置部分2.2 生成工程代码部分 第3章 代码编写第4章 实验现象总结 前言 SG90、MG996舵机在机器人领域用得非常多,因为舵机有内置控制电…