elementNodeReference.children没有检测到文本节点?

时间:2013-05-08 06:26:03

标签: javascript html dom

Per this link返回子节点列表。在我的测试中,这似乎忽略了文本节点。这是对的吗?

让我感到困惑的是,firstChild可以使用,但是子列表为零。

在Firefox 20.0.1中测试。

这是我的测试代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<title></title>
<script>

function checktable() {
    var mytable = document.getElementById("mytable");

    var cells = mytable.rows[0].cells;

    for (var i = 0; i < cells.length; i++) {
        console.log("firstChild.nodeValue:", cells[i].firstChild.nodeValue);
        console.log("firstChild.data:",cells[i].firstChild.data);
        console.log("children.length:",cells[i].children.length);
    }
}


function checkdiv() {
    var mydiv = document.getElementById("mydiv");
    console.log("firstChild.nodeValue:", mydiv.firstChild.nodeValue);
    console.log("firstChild.data:",mydiv.firstChild.data);
    console.log("children.length:",mydiv.children.length);
}
</script>
<style>
</style>
</head>

<body>

<table id="mytable">
<tr>
<td>Blob</td>
<td>Blab</td>
<td><a href="http://stackoverflow.com">Link</a></td>
</tr>
</table>

<div id="mydiv">
Blib
</div>

<button onclick="checktable()">Check table</button>
<button onclick="checkdiv()">Check div</button>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

您需要.childNodes,而不是.children

前者是Node的方法,并列出子节点。后者是Element的一种方法,因此列出了子元素,这在某些情况下更为可取。