空白算作 DOM 中的空文本元素。我如何计算这些空格?
例如
<body>
<div>
</div>
<div>
</div>
</body>
body 元素中有多少个空格(childNodes)?
每个 div 元素中有多少个空格(子节点)?
空白算作 DOM 中的空文本元素。我如何计算这些空格?
例如
<body>
<div>
</div>
<div>
</div>
</body>
body 元素中有多少个空格(childNodes)?
每个 div 元素中有多少个空格(子节点)?
您发布的代码有 5 个空格。我会向你解释为什么会这样。首先,我想明确一点,当我提到 whitepace 时,我不仅仅是在谈论" "
char。空格也可以是\t
或\r
chars \n
,代表空的文本节点。
话虽如此,我们可以谈谈您发布的代码在 DOM 中的表示方式:
body
|
x-- #Text = "\n\t"
|
x-- div
| |
| x-- #Text = "\n\t"
|
x-- #Text = "\n\t"
|
x-- div
| |
| x-- #Text = "\n\t"
|
x-- #Text = "\n"
如您所见,\n
和\t
位于同一文本节点中。这符合DOM Level 2说:
当一个文档第一次通过 DOM 可用时,每个文本块只有一个 Text 节点。
因此,下推的断线与div
右推的选项卡位于同一文本节点中。我们可以更进一步,在其中一个div
s 中添加一个文本:
<body>
<div>
</div>
<div>
Hello World!
</div>
</body>
这将由浏览器解析,例如:
body
|
x-- #Text = "\n\t"
|
x-- div
| |
| x-- #Text = "\n\t"
|
x-- #Text = "\n\t"
|
x-- div
| |
| x-- #Text = "\n\t Hello World! \n\t"
|
x-- #Text = "\n"
文本与两个空白节点组合在一起,因为一切都是文本,因此它们成为单个文本块。这是您应该在文档中计算空格的方式。
但我不会依赖我的眼睛并尝试根据计数空格来查找或访问元素。而是使用一些脚本循环childNodes
并检查元素nodeType
的。
在这里,您可以使用一些有用的函数来遍历 DOM,而不必担心空格。
好了,话够多了。让我们看一些代码。要证明您发布的 HTML 有 5 个空格,请参阅这个计算文档中所有文本节点的
工作示例。
希望它有助于澄清一些事情。
如果你想看看有多少元素是空的?然后我给你一个 jQuery 解决方案。
bodyChild = $("body :empty").length;
divHcild = $("#divid :empty").length;
使用它们,您可以知道一个元素中有多少元素是完全空的。
更新: 要获取所有子元素,您可以使用类似这样的东西
身体:
var children = document.getElementByTagName('body').childNodes;