0

私は体の要素を数えようとしています、そして私はこれをやっています

<html>
<head>
<title>Practice Javascript</title>
<script>
window.onload = count;
function count()
{ 
 var ele = document.body.childNodes;
 alert(ele.length);
}

</script>
</head>
<body>
<p>Text one</p>
<p>Text Two</p>
</body>
</html>

出力が 2 になると思っていましたが、5 でした

しかし、次のコードで改行を削除すると

<html>
<head>
<title>Practice Javascript</title>
<script>
window.onload = count;
function count()
{ 
 var ele = document.body.childNodes;
 alert(ele.length);
}

</script>
</head>
<body><p>Text one</p><p>Text Two</p>
</body>
</html>

出力 3 を与える Dom ツリーは、存在する子ノードの数をどのように評価しますか?

4

3 に答える 3

3

childNodesテキストノードが含まれています。childElementCount代わりに 使用してください。children一方、テキストノードは含まれていません。したがって、使用できますnode.children.length。あなたの場合、その html に 3 つの新しい行があるため、3+2 は 5 です。

于 2013-09-17T12:58:32.487 に答える
1

simonzack が既に言ったように、改行は textNodes に処理されています。したがって、あなたが持っているように、体の下に5つのノードを取得します

<body>
  TextNode{\n}
  ElementNode{p}
  TextNode{\n}
  ElementNode{p}
  TextNode{\n}
</body>

これは、html 内のすべての空白と改行を削除することで回避できます。

<body><p>Text one</p><p>Text Two</p></body>

または、childElementCount提案どおりに使用します。

于 2013-09-17T13:04:13.980 に答える