使用childNodes时如何解决返回nodelist中空白文本节点的问题

QT 读写xml pro文件里面添加QT+=xml,操作xml的头文件包含include 或include 。title元素为book元素的子元素,Harry Potter为其文本。如上第一行为xml文档的说明,version和enconding分别代表当前xml文档的版本和编码方式。xml元素:XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。如bookstore元素为根元素、book元素为bookstore的子元素,子元素、文本、属性。 阅读详情

在使用childNodes属性来返回节点的全部子节点的时候,childNodes会将子节点之间的空格看做一个空的文本节点一并返回。
html代码如下:

<div id="content">
     <ul>
         <li><span>HTML</span></li>
         <li><span>JS</span></li>
         <li><span>CSS</span></li>
         <li><span>JS</span></li>
      </ul>
</div>
    <script>
        function myfunction(sectionId) {
        var findUl = document.getElementById(sectionId).getElementsByTagName("ul")[0];
        var findLi = findUl.childNodes;
        console.log(findLi);
        }
        myfunction("content");
    </script>

打印出的结果:可以看到一共返回了9个子元素,其中有5个空的text节点,我们可以使用正则表达式将这些空的文本节点从删除掉(或者将空格从HTML中删除,又或者使用children来获取子节点)
1
删除空白文本节点的方法:

<script>
        function myfunction(sectionId) {
        var findUl = document.getElementById(sectionId).getElementsByTagName("ul")[0];
        var findLi = findUl.childNodes;
        for(i = 0; i < findLi.length; i++) {
            if(findLi[i].nodeName == "#text" && /\s/.test(findLi[i].nodeValue)) {
                findUl.removeChild(findLi[i]);
            }
        }
        console.log(findLi);
    }
      myfunction("content");
    </script>

之后可以看到打印结果只包括所需要的四个list子元素。nodeName和nodeValue的值可以从第一个打印结果中找到,然后用这两个值确定是否为要删除的空白文本节点。
2
这里在说一下removeChild()方法,它从dom中删除一个子节点,并返回所删除的子节点。被移除的这个子节点任然存在与内存当中,只是没有添加到当前文档的dom中,所以这个被移除的子节点还可以被重新添加回来,前提是你需要用一个变量来保存这个被移除的子节点。列如:

var oldNode = findUl.removeChild(findLi[i]);
querySelector实战指南:用CSS选择器精准定位DOM元素 querySelector是浏览器原生提供的DOM查询API,基于CSS选择器语法实现高效、声明式的元素定位。其核心原理是复用浏览器CSS引擎的规则匹配能力,相比传统getElementById等方法,具备更强的表达力、更好的性能表现和与样式系统天然一致的维护性。它支持伪类、属性选择器及复杂组合,广泛应用于动态渲染处理、状态判断、组件封装和跨框架集成等工程场景。本文聚焦真实项目中高频踩坑点,如作用域陷阱、NodeList类型混淆、伪类兼容性及性能边界,帮助开发者从‘能用’迈向‘精通’。 阅读详情

相关推荐

MIT Cheetah Learning (一):State Estimate 从理论到实践:EKF融合IMU与编码器的状态估计全解析

本文深入解析了MIT Cheetah机器人中基于Extended Kalman Filter的状态估计技术,详细探讨了如何融合IMU与编码器数据以实现精准的State Estimate。通过四元数建模和传感器误差分析,揭示了EKF在复杂地形中的工程实践价值,为四足机器人的实时状态估计提供了完整解决方案。

weixin_30292843的博客 304

JS中的元素节点

会将空格及空行也当成子节点【当成文本】,所以会造成一些麻烦,解决方案是使用。表示当前节点的所有子节点,就是返回所有子节点。属性会获取包括文本节点在呢的所有节点。选择器使用一样,这两个方法非常重要。这个属性不会获取到空文本节点的。

weixin_47267628的博客 942

SAP STO流程实战:如何配置外向交货单PGI后自动生成内向交货单(附避坑指南)

本文详细解析了SAP STO流程中,如何配置实现外向交货单发货过账(PGI)后自动生成内向交货单。通过分步指南,重点阐述了SPED输出类型、输出条件记录、收货点及确认控制码等关键配置,并提供了针对“No goods receipt possible”等常见错误的避坑指南,助力实现跨公司物料转移流程的自动化与高效衔接。

weixin_28327051的博客 395

javascript获取childNodes详情,删除空节点

chidNodes返回的是node的集合, 每个node都包含有nodeType属性。 nodeType取值: 元素节点:1 属性节点:2 文本节点:3 注释节点:8 页面上是由无数个节点组成,节点分成元素节点、属性节点、文本节点、注释节点 <table> <tr> <td>aaa</td&...

weixin_34380948的博客 274

OpenCode:终端开源AI编程助手,多模型接入与实战指南

AI编程助手正在从IDE侧边栏走向终端环境。其核心原理是让模型直接读取项目文件、执行命令、查看报错,形成从诊断到修复的完整闭环,从而解决传统插件上下文割裂的问题。技术价值在于开源透明、模型无关,既可接入OpenAI等云端服务,也能通过Ollama连接本地模型,兼顾数据安全与离线场景。在工程实践中,它适用于长时间驻留项目、自动修Bug、团队统一AI工具链等需求。OpenCode正是这样一款终端AI助手,支持灵活配置第三方API密钥,提供免费档与Go套餐,并通过Skills技能系统让模型遵循标准操作流程。同时,

weixin_28745821的博客 326

以ATT&CK为例构建网络安全知识图

随着攻击工具、方法的逐渐升级和复杂化,安全数据的大规模融合,攻防对抗愈加激烈。安全团队如何在浩瀚数据中有效发现高级威胁的蛛丝马迹,如何把网络安全专家的经验、知识有效转化为可复制可扩展的数据分析能力,如何将对抗高级威胁的“炼金术”逐步升级为科学淘金指南,如何将安全从业者从繁重的体力劳动中解放出来,愈发成为安全能力亟需突破的难点和重点,也是我们正在探索的方向。正如医疗行业中治疗疑难杂症依赖医疗专家,网络空间高级威胁的防护和处置也依赖安全专家的经验与知识。

2401_88752684的博客 1090

childNodes详解

定义和用法 childNodes 属性返回节点的子节点集合,以 NodeList 对象。 提示:您可以使用 length 属性来确定子节点的数量,然后您就能够遍历所有的子节点并提取您需要的信息。 浏览器支持 所有主流浏览器都支持 childNodes 属性。 语法 element.childNodes 技术细节 返回值: NodeList 对象,...

diukuijian4440的博客 1910

Kylin V10 ARM64离线安装ffmpeg实战指南

在国产化替代浪潮下,基于银河麒麟V10和ARM架构(如飞腾、鲲鹏)的内网服务器部署音视频处理服务成为常态。由于系统默认软件源缺乏aarch64包且无法连接外网,常规yum安装方式难以奏效。本文从离线安装的通用概念出发,剖析了在Kylin V10上安装ffmpeg的三大路线及其原理,重点介绍了源码编译法,包括依赖梳理、工具链准备、编译参数配置、常见错误排查等关键环节。同时,将这套依赖管理与离线部署方法论延伸至nginx、node.js、Python库及docker等场景,帮助读者建立一套可复用的国产化系统离线

weixin_33417488的博客 148

node 获取表单数据 为空_Node 程序 debug 小记

有时候,所见并不是所得,有些包,你需要去翻他的源码才知道为什么会这样。背景今天调试一个程序,用到了一个很久之前的NPM包,名为formstream(https://www.npmjs.com/package/formstream),用来将 form表单数据转换为流的形式进行接口调用时的数据传递。这是一个几年前的项目,所以使用的是 Generator+ co实现的异步流程。其中有这样一个功...

weixin_39897749的博客 329

别再手动敲代码了!用STM32CubeMX+FreeRTOS图形化配置,5分钟搞定多任务通信框架

本文详细介绍了如何利用STM32CubeMX和FreeRTOS快速搭建多任务通信框架,大幅提升嵌入式开发效率。通过图形化配置工具,开发者可在5分钟内完成任务调度、时钟配置和内核对象生成,特别适合物联网设备开发。文章还提供了代码优化和调试技巧,帮助开发者轻松应对复杂应用场景。

weixin_30363285的博客 291

C# ScottPlot 5.0 WinForms 十字光标示例:轻松实现动态数值显示,你学会了吗?

ScottPlot是一个免费、开源的.NET交互式绘图库,能够轻松地实现大型数据集的交互式显示。它支持多种图表类型,如折线图、柱状图、饼图、散点图等。ScottPlot的性能非常出色,即使是处理千万级别的数据也游刃有余。

java专栏 2216

php childnodes,XML DOM

XML DOM childNodes 属性 Element 对象定义和用法childNodes 属性返回包含被选节点的子节点的 NodeList。如果选定的节点没有子节点,则该属性返回不包含节点的 NodeList。语法elementNode.childNodes提示和注释提示:如需循环遍历 childNodes 列表,使用 nextSibling 属性要比使用父对象的 childNodes 列表...

weixin_33514277的博客 172

Qt C++ HTTP 调用通义千问大模型 X 学术论文润色工具(SCI 格式适配)

请求地址:`https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation`;| Windows | 打包时携带 `Qt6Network.dll`/`libcrypto-1_1-x64.dll` 等依赖;| Linux | 安装 `libssl-dev` 和 `libcurl4-openssl-dev`;| API 调用失败 | 检查 API-KEY 是否有效;

寒寒豆豆软件公司的博客 104

childNodes 详解

在JavaScript中,childNodes是一个属性,属于Node对象,它返回一个NodeList对象,其中包含了指定Node对象下所有类型的子节点。这些子节点可以是元素节点(Element)、文本节点(Text)、注释节点(Comment)等。

思索的涟漪,突破自我 1080

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

如何用 childNodes 与 children 区分文本节点与元素子节点

p>Hello</p></div>这个 div 的 childNodes 实际包含 3 个节点:一个换行+空格组成的文本节点、一个 <p> 元素节点、再一个换行文本节点。有道翻译AI助手 有道翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译、网页翻译、文档翻译、PDF翻。

xz_ike的博客 60

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

querySelectorAll与childNodes

NodeList 对象是一个节点的集合,是由 Node.childNodes 和 document.querySelectorAll 返回的. html代码: <ul id="parent"> <li>1</li> <li>2</li> <li>3</...

weixin_30367873的博客 203

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

DOM树详解:从HTML解析到节点操作的完整认知地图

DOM(文档对象模型)是浏览器将HTML源码转化为可编程内存结构的核心机制,其本质是一棵动态、实时、由多种节点类型构成的树形数据结构。理解DOM树的构建过程——从词法分析、语法解析到文本节点注入与渲染树合成——是掌握前端交互逻辑的基础。DOM节点并非静态标签,而是具备nodeType、nodeName、childNodes等12个关键属性的JavaScript对象,其中ELEMENT_NODE和TEXT_NODE最常被操作。正确区分innerHTML、createElement和DocumentFragme

cuxiong8996的博客 651

DOM 基础概念与节点体系

DOM 以树形结构组织所有节点,节点间存在明确的层级与亲属关系,所有页面操作都建立在节点获取、遍历与关系判断的基础之上。

2401_83227843的博客 313

JavaScript 中 DOM 操作获取子节点集合的两种属性

【代码】JavaScript 中 DOM 操作获取子节点集合的两种属性。

C20001206的博客 210

DOM遍历本质:理解网页结构与节点关系的系统性操作

DOM(文档对象模型)是浏览器将HTML解析为内存中树状对象结构的核心机制,其遍历并非简单查找节点,而是基于父子、兄弟等层级关系的系统性导航与操作。掌握DOM遍历原理,意味着理解节点类型差异(如children与childNodes)、遍历时机(DOMContentLoaded vs load)、以及三种底层范式——深度优先(DFS)、广度优先(BFS)和事件冒泡——它们直接映射浏览器渲染与事件系统的原生行为。这一能力支撑着前端交互开发、无障碍焦点管理、CSS性能分析、服务端HTML解析(JSDOM)及跨框

weixin_30873847的博客 404

JavaScript中DOM树与数据结构树的深度解析

树(Tree)是计算机科学中最基础的非线性数据结构之一,其核心在于节点(Node)间的父子、兄弟等层级关系。在前端开发中,这种抽象模型具象化为浏览器中的DOM树,每个HTML元素都是一个node,具备parentNode、childNodes、nextSibling等原生属性。理解nodeType类型区分(如ELEMENT_NODE与TEXT_NODE)、children与childNodes的本质差异,是避免遍历错乱、事件失效、性能卡顿的关键。结合JSON格式的逻辑树与DOM树的双向映射,开发者可构建可拖

weixin_30781107的博客 407

DOM_节点层次

一、DOM1级定义了一个Node接口,这个接口是由DOM中的所有节点类型实现的。Node接口共有12种节点类型,常见的是元素节点、文本节点和文档节点。 Node.ELEMENT_NODE(1);——元素节点 Node.Text_NODE(3);——文本节点 Node.DOCUMENT_NODE(9);——文档节点 二、IE浏览器没有Node类型的构造函数,保证兼容,可以做以下比较...

weixin_30515513的博客 83

DOM备忘录

nodeName和nodeValue属性 对于element节点而言,nodeName是标签名,nodeValue是null;而对于textNode节点而言,nodeName是#Text,nodeVlue是内部字符串。譬如: node关系: 父子关系:firstChild, lastChild, parentNode 兄弟关系:nextSibli...

aihuo4431的博客 138

你不知道的javascript之node类型详解

前段时间有做过一个关于节点操作的排序问题, http://blog.youkuaiyun.com/blueblueskyhua/article/details/68929578 今天就node类型,进行详细的讲解。首先看下他的兼容性。 node共有12类型。 类型详情可以参考http://www.w3school.com.cn/jsref/prop_node_nodetype.asp 1.no

程序员秋风的博客 1399

DAY22-DOM

DOM

qq_42775808的博客 94
上一篇: vscode里添加注释的快捷键
下一篇: setInterval实现渐变效果
RebootTang
博客等级 码龄10年 2粉丝 17原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值