先看一段代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><script>window.onload = function(){console.log(document.body.childNodes);}</script>
</head>
<body><div></div></body>
</html>

看上面的代码,一开始我觉得bodychildNodes应该只有一个div标签的,因为childNodes表示的子节点的NodeList,但是结果并不是我想的那样。运行结果如下图:

看到这个结果我就有点蒙圈了,明明body里面就只有一个div,但是怎么会有个text文本节点呢?于是我改变了下代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><script>window.onload = function(){console.log(document.body.childNodes);}</script>
</head>
<body><div></div>
</body>
</html>

我给divbody结束标签之间加了个回车,查看结果:

我的天,怎么结果是一样的!!于是我又改变了一下代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><script>window.onload = function(){console.log(document.body.childNodes);}</script>
</head>
<body><div></div></body></html>

我将html结束标签与body标签放在了同一行,查看结果:

发现终于只有一个div标签了。


归纳总结:默认情况下,在body与其最后一个子节点之间没有空格或换行时,如果body后面的html结束标签和body不在一行的情况下,body中的childNodes会把body结束标签与html结束标签之间的文本节点也放进去。
而在在body与其最后一个子节点之间有空格或换行时,这个奇怪的行为就会自动消除,此时body中的childNodes就会按照其内部的子节点个数存储。
所以以后如果想只获取body里面某个节点的childNodes时,记得让body的结束标签与html的结束标签放在同一行!!!

JavaScript中childNodes默认格式问题相关推荐

  1. 深入 JavaScript 中的默认参数!

    译者:前端小智 作者:Tania Rascia 来源:flatlogic.com 点赞再看,微信搜索**[大迁世界],B站关注[前端小智]**这个没有大厂背景,但有着一股向上积极心态人.本文 GitH ...

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

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

  3. javascript中childNodes与children的区别

    1.childNodes:获取节点,不同浏览器表现不同: IE:只获取元素节点: 非IE:获取元素节点与文本节点: 解决方案:if(childNode.nodeName=="#text&qu ...

  4. 在JavaScript中使用“原型”还是“ this”?

    之间有什么区别 var A = function () {this.x = function () {//do something}; }; 和 var A = function () { }; A. ...

  5. Javascript中的valueOf与toString

    基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下. t ...

  6. 现在JavaScript日期–如何在JavaScript中获取当前日期

    Many applications you build will have some sort of a date component, whether it's the creation date ...

  7. 如何在 JavaScript 中获取当前日期

    日常开发中我们经常会用到某种日期功能,比如内容的创建日期.活动的时间戳等.处理日期和时间戳格式可能会很麻烦.在本文中,我们将一起学习如何在 JavaScript中以各种格式获取当前日期. JavaSc ...

  8. JavaScript 中获取当前日期

    在我们开发的许多应用程序都会用到某种日期功能,无论是内容的创建日期还是活动的时间戳等等. 处理日期和时间戳格式可能会很麻烦.在本文中,我们将一起学习如何在 JavaScript 中以各种格式获取当前日 ...

  9. JavaScript中实现函数重载和参数默认值

    2019独角兽企业重金招聘Python工程师标准>>> 参数默认值是指在调用函数时,若省略了某个实参,函数会自动为该参数分配一个默认值,使得函数调用的方便性和灵活性大大提高. 举个例 ...

最新文章

  1. ASP.NET设计应用程序的七大绝招
  2. CentOS Git服务安装
  3. 无旋treap的简单思想以及模板
  4. Python进阶09 动态类型
  5. javascript对象操作总结
  6. 在.NET 2.0正式版中开发无刷新页面
  7. 洛谷P1352 没有上司的舞会(树形DP水题)
  8. (计算机组成原理)第二章数据的表示和运算-第三节3:浮点数加减运算
  9. jquery-ajax请求-1909
  10. Golang实践录:使用gin框架实现转发功能:利用nginx转发
  11. 不想在博问中提出的问题
  12. “春风又绿江南岸”真正的关键是什么?
  13. matlab里用simulink仿真教程,Matlab-Simulink仿真教程
  14. ad转化输出电压值8086和ADC0808的Proteus仿真
  15. C盘无法扩展卷(因后面有个恢复分区)——删除恢复分区
  16. 移动化之后,BAT下一步走向何方?我们又该走向何方?
  17. Python 操作 Word
  18. 关于“前台根据后台值,操作字段、显示或select选中状态”的几种做法
  19. 壹账通否认财务造假,此前市值已蒸发近8成
  20. Java入门第116课——向List中插入和删除元素

热门文章

  1. web系统ie浏览器不刷新数据
  2. 公钥私钥传输,以及对CA证书的理解
  3. Orin PPS failed to request pps gpio修改
  4. php 鼠标 复制粘贴,特殊符号复制粘贴的方法
  5. 清华同方服务器怎么装系统,清华同方电脑自己怎么更新系统图文教程
  6. 百度回港上市AB面:掉队与翻盘?
  7. qt 更改文字样式和颜色
  8. 基于Joplin和Joplin Server搭建私有云笔记
  9. IDEA自定义注释样式
  10. JS中如何定义全局变量