javascript - 什么是意外的文本节点?
问题描述
我有一个仅包含一个子元素的父元素,据我所知,该父元素有一个子节点,但在控制台中有三个节点,其中两个是文本节点。这在这张图片中很清楚。 现在我的问题是:
1.这个文本节点是从哪里来的?
这些文本节点是内置的吗?它们的必要性是什么?
他们的规则是什么?
var container = document.getElementById('container');
var children = container.childNodes;
console.log(children);
<div id="container">
<div id='test'></div>
</div>
解决方案
其中两个childNodes
是换行符。来自 MDN:
childNodes
包括所有子节点,包括非元素节点,如文本和评论节点。要获取仅包含元素的集合,请ParentNode.children
改用。
如果您不明白我的意思,请参阅以下代码段的输出:
var container = document.getElementById('container');
var chlds = container.childNodes;
chlds.forEach(c => console.log(c.nodeName + ":" + c.innerText));
<div id="container">
<div id='test'></div>
</div>
为了回答您的后续问题,由于文档具有换行符(或其他非元素标记),文本节点就存在于文档中。children
是获取元素子节点的一种更可靠的方法,因为childNodes
输出在未缩小和缩小的 HTML 代码之间可能会有所不同,这可能会让您有些头疼。
推荐阅读
- c++ - 在c ++中将字符串合并在一起,而不是添加到,合并
- python - AES 加密类型错误
- xml - how to pass values from a one2many field to another field in different model of same form? form view image given below (ial)
- jquery - 当子 li 被按下时如何停止父级的切换类?
- amazon-s3 - How to serve a static html that has a php extension with S3?
- javascript - 使用 Jquery Validator 和 Sweetalert 进行表单提交确认框
- python - TypeError:non_max_suppression() 得到了一个意外的关键字参数“score_threshold”
- r - visreg:在一个图中覆盖两个模型
- sorting - 角材料表排序行为导致错误的顺序
- bash - Bash script error "unexpected token" determining php command