做题的时候碰见了关于 childNodeschildren之间的区别的问题,查了一点点资料,对他们二者之间也有了一些了解,写博客加深一下自己的印象.

二者的定义:

  1. childNodes: 返回包含指定节点的子节点的集合,该集合为即时更新的集合
  2. 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 Explorer 会忽略节点之间生成的空白文本节点(比如换行字符),而 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 区别相关推荐

  1. 关于childNodes和children区别

    关于childNodes和children区别 一.parentNode和parentElement区别? 二.childNodes和children区别 1.区别 HTML共同 <ul id= ...

  2. parentNode、parentElement,childNodes、children 区别

    parentElement 获取对象层次中的父对象. parentNode 获取文档层次中的父对象. childNodes 获取作为指定对象直接后代的 HTML 元素和 TextNode 对象的集合. ...

  3. JavaScript之childNodes 和 children 区别

    1.先让我们来看看childNodes的用法,以及是如何计算节点数量: 为什么输出是7而不是3呢?原来Internet Explorer 会忽略节点之间生成的空白文本节点(比如换行字符),而 Mozi ...

  4. javascript中childNodes与children 区别 以及firstChild与firstElementChild区别

    1:childNodes属性: 标准的,它返回指定元素的子元素集合,包括html节点,所有属性,文本.可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属 ...

  5. Js-parentNode、parentElement,childNodes、children 它们有什么区别呢?

    原文:http://www.it130.cn/Article/FAQ/Web-kaifa/JavaScript/2007-3-20/2007032017013900.html 所属分类:Web 开发 ...

  6. js表单验证处理和childNodes 和children 的区别

    一.对提交表单进行空值验证 html代码: 1 <form action="#"onsubmit="return validate_form(this);" ...

  7. childNodes和children的区别

    <!DOCTYPE html> <html><head><meta charset="utf-8" /><title>c ...

  8. childNodes和children,firstChild和firstElementChild,lastChild和lastElementChild的区别

    首先,我们给出HTML的代码 <ul id='city'><li>北京</li><li>南京</li><li>东京</li ...

  9. Html DOM元素的childNodes和children的区别

    对于DOM元素,children是指DOM Object类型的子对象,不包括tag之间隐形存在的TextNode,而childNodes包括tag之间隐形存在的TextNode对象. 具体看一下针对c ...

最新文章

  1. 如何将风险应用加入白名单_将微信服务器、API接口的IP列表加入宝塔防火墙IP白名单...
  2. 一、Java入门和环境安装
  3. detectron2训练自己的数据集_YOLO(v3)PyTorch版 训练自己的数据集
  4. 公司网页添加旺旺,状态不正确
  5. Python使用UDP协议打造在线时间服务器
  6. TensorFlow2.0:单层感知机梯度计算
  7. 验证列数据是否重复方法归类贴
  8. 温度压力测试软件什么好,温度压力测试_鲁大师温度压力测试多少度正常
  9. linux安装btsync
  10. 第十二章:互联网-webbrowser:显示Web页面-使用特定浏览器
  11. php codesniffer,为你的 PHP_CodeSniffer 构建自定义规则
  12. 自制网页(仿B站)前端开源程序
  13. web接口测试之GET与POST请求
  14. Oracle数据库网络详解
  15. 基础实验——ADC(模数转换)
  16. 语言与区域设置ID (Language ID、Locales ID / LCID)
  17. 8月11日 网工学习 APR协议 传输层协议 TCP UDP 数据封装转发全过程
  18. ddr2是几代内存_DDR1 DDR2 DDR3内存条有什么区别?怎么区分?
  19. STSW-LINK00x下载集合,百度云连接
  20. 64位win10下notepad++ jsonviewer插件安装失败

热门文章

  1. 2023年1月用户体验GX评测:商业银行抢抓新春营销旺季,多措并举持续提升用户体验
  2. add 和concatenate的区别
  3. C# Winform Chart控件用法6之雷达图
  4. latex表格合并单元格后的内容如何自动换行(非手动)
  5. 强大的修图app--美图秀秀
  6. C语言-老鼠走迷宫(深度寻路算法)
  7. 推好单-好券app代理申请 带你分享优惠券赚钱
  8. 爬取知乎高赞情话,甜蜜过七夕
  9. 国内物联网平台初探(四) ——京东微联
  10. c 语言vector用法,C++ Vector用法深入剖析