日期:2014-05-16  浏览次数:20347 次

为什么获取table的直接后代标签对象(childNods)第一个会是3#text??
本帖最后由 u012240907 于 2013-10-16 20:59:05 编辑

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function getNodeLevel()
{
var tableNode = document.getElementById("ta");
// alert(tableNode.nodeName);
var chile = tableNode.childNodes;
alert(chile[0].nodeName);
}
</script>
</head>
<body>
<input type="button" value="通过节点关系获取节点" onclick="getNodeLevel()">
<div>div区域</div>
<table id="ta">
<tbody>
<tr>
<td>哈哈</td>
<td>啦啦</td>
</tr>
</tbody>
</table>
<dl>
<dt>上层项目</dt>
<dd>下层项目</dd>
</dl>
</body>
</html>



看视频上的运行结果是tbody
我运行的是#text

用的都是IE浏览器,但是版本不一样,是因为版本问题么?

获取table的上个节点和下个节点,previousSibling和nextSibling也都是#text。。。。
实在搞不明白,还是大叔大婶们指点指点。。。

------解决方案--------------------
因为有换行符,也是字符的一种,要想不是#text,可以去掉换行符和空格
<div>div区域</div><table id="ta"><tbody>

。。。这样。

或者采用 previousElementSibling等这样的方法,(ie9之后)

或者while()往上找到nodeType==1的元素
------解决方案--------------------
不同的浏览器处理方法不同,非IE都是#text,低版本IE不是#text