2

我的代码中有一个表,我将其用作查找表,方法是<td>根据<tr>.

<table>
<tr id="nas">
<td>1.34</td>
<td>0.67</td>
<td>1</td>
<td>1.25</td>
</tr>
</table>

当我如上所示输入表格时:document.getElementById("nas").childNodes.length结果为 9,而显然我只有 4 个元素的子元素<tr id="nas">。有些子元素是<td>带有值的实数,有些只是空元素。我真的对这个感到困惑。

但是,如果我在一行中输入表格,我会得到正确数量的孩子。

<table>
<tr id="nas"><td>1.34</td><td>0.67</td><td>1</td><td>1.25</td></tr>
</table>

你认为为什么会这样?

4

4 回答 4

2
childNodes
0 <TextNode textContent="\n">   
1 td
2 <TextNode textContent="\n">
3 td
4 <TextNode textContent="\n">
5 td        
6 <TextNode textContent="\n">
7 td
8 <TextNode textContent="\n">

我不完全知道是谁制作了文本节点、浏览器或 javascript 解析器,但这就是 javascript 所看到的。

于 2011-09-07T18:48:27.923 回答
1

这里有一篇很好的文章解释了这个问题: https ://developer.mozilla.org/en/whitespace_in_the_dom

于 2011-09-07T19:11:57.377 回答
0

childNodes 包括所有 childNodes,包括文本节点(即单元格之间的空白)。尝试这样的事情:

var children = document.getElementById('nas').childNodes,
    count = 0,
    len = children.length;

for (var i = 0; i < len; i++) {
    // make sure it's type ELEMENT_NODE
    if (children[i].nodeType === 1) { count++ }
}

alert(count); // 4
于 2011-09-07T18:49:57.590 回答
0

因为标签之间的换行符被视为文本,并被转换为 DOM 中的文本节点。

于 2011-09-07T18:48:58.963 回答