了解childNodes 和 children 区别
做题的时候碰见了关于 childNodes
和 children
之间的区别的问题,查了一点点资料,对他们二者之间也有了一些了解,写博客加深一下自己的印象.
二者的定义:
- childNodes: 返回包含指定节点的子节点的集合,该集合为即时更新的集合
children
: 是一个只读属性,返回 一个Node的子elements ,是一个动态更新的HTMLCollection
,属于非标准型,不过它还是依旧可以被所有的浏览器所支持
用下面的一段代码来展示二者之间具体的区别:
childNodes的结果:
<ul id ='list'><li>111</li><li>222</li><li>333</li></ul><script>let oul = document.getElementById('list');let olis = oul.childNodes;console.log(olis.length);console.log(olis);</script>
打印结果如下图:
在我们的认识中,这里难道不应该打印3
吗?他为啥打印了7
呢,因为Internet Explore
r 会忽略节点之间生成的空白文本节点(比如换行字符),而 Mozilla 不这么做。
我们具体来看看到到时为啥会打印7呢?
childNodes
获取的是元素所有的子节点.
childrem
打印情况:
let oul = document.getElementById('list');let olis = oul.children;console.log(olis.length);console.log(olis);
打印的结果如下:
children
用来获取所有的子元素,所以打印的结果是 3
. children
不需要去计算空格所占的节点
获取标签里面的内容值需要通过下标获取对应的元素,然后获取元素中的内容即可:
console.log(oul.childNodes[3].innerHTML);console.log(oul.children[1].innerHTML);
得到的结果实现相同的,如下图:
for(let i = 0 ; i < olis.length ; i++) {if (oul.childNodes[i].nodeType == 1) {// nodes.childNodes[i] 是元素节点console.log(`${i}是元素节点`);}else if(oul.childNodes[i].nodeType == 2) {console.log(`${i}是属性节点`);}else {console.log(`${i}是文本节点`);}}
不建议使用childNodes方法。
硬要使用这个方法,可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点。因此我们做如下判断:
for(let i = 0 ; i < olis.length ; i++) {if (oul.childNodes[i].nodeType == 1) {// nodes.childNodes[i] 是元素节点console.log(`${i}是元素节点`);}else if(oul.childNodes[i].nodeType == 2) {console.log(`${i}是属性节点`);}else {console.log(`${i}是文本节点`);}}
和 childNodes
方法相比,更推荐使用 children
方法.
了解childNodes 和 children 区别相关推荐
- 关于childNodes和children区别
关于childNodes和children区别 一.parentNode和parentElement区别? 二.childNodes和children区别 1.区别 HTML共同 <ul id= ...
- parentNode、parentElement,childNodes、children 区别
parentElement 获取对象层次中的父对象. parentNode 获取文档层次中的父对象. childNodes 获取作为指定对象直接后代的 HTML 元素和 TextNode 对象的集合. ...
- JavaScript之childNodes 和 children 区别
1.先让我们来看看childNodes的用法,以及是如何计算节点数量: 为什么输出是7而不是3呢?原来Internet Explorer 会忽略节点之间生成的空白文本节点(比如换行字符),而 Mozi ...
- javascript中childNodes与children 区别 以及firstChild与firstElementChild区别
1:childNodes属性: 标准的,它返回指定元素的子元素集合,包括html节点,所有属性,文本.可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属 ...
- Js-parentNode、parentElement,childNodes、children 它们有什么区别呢?
原文:http://www.it130.cn/Article/FAQ/Web-kaifa/JavaScript/2007-3-20/2007032017013900.html 所属分类:Web 开发 ...
- js表单验证处理和childNodes 和children 的区别
一.对提交表单进行空值验证 html代码: 1 <form action="#"onsubmit="return validate_form(this);" ...
- childNodes和children的区别
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>c ...
- childNodes和children,firstChild和firstElementChild,lastChild和lastElementChild的区别
首先,我们给出HTML的代码 <ul id='city'><li>北京</li><li>南京</li><li>东京</li ...
- Html DOM元素的childNodes和children的区别
对于DOM元素,children是指DOM Object类型的子对象,不包括tag之间隐形存在的TextNode,而childNodes包括tag之间隐形存在的TextNode对象. 具体看一下针对c ...
最新文章
- 如何将风险应用加入白名单_将微信服务器、API接口的IP列表加入宝塔防火墙IP白名单...
- 一、Java入门和环境安装
- detectron2训练自己的数据集_YOLO(v3)PyTorch版 训练自己的数据集
- 公司网页添加旺旺,状态不正确
- Python使用UDP协议打造在线时间服务器
- TensorFlow2.0:单层感知机梯度计算
- 验证列数据是否重复方法归类贴
- 温度压力测试软件什么好,温度压力测试_鲁大师温度压力测试多少度正常
- linux安装btsync
- 第十二章:互联网-webbrowser:显示Web页面-使用特定浏览器
- php codesniffer,为你的 PHP_CodeSniffer 构建自定义规则
- 自制网页(仿B站)前端开源程序
- web接口测试之GET与POST请求
- Oracle数据库网络详解
- 基础实验——ADC(模数转换)
- 语言与区域设置ID (Language ID、Locales ID / LCID)
- 8月11日 网工学习 APR协议 传输层协议 TCP UDP 数据封装转发全过程
- ddr2是几代内存_DDR1 DDR2 DDR3内存条有什么区别?怎么区分?
- STSW-LINK00x下载集合,百度云连接
- 64位win10下notepad++ jsonviewer插件安装失败