问答详情
源自:9-9 访问子节点的第一和最后项

为什么输出的是#text#text 不应该是节点名字吗

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<div id="con">
  <div> <p>javascript</p>
  <div>jQuery</div>
  <h5>PHP</h5></div>
</div>
<script type="text/javascript">
  var x=document.getElementById("con");
  document.write(x.firstChild.nodeName);
 document.write(x.lastChild.nodeName);
</script>
</body>
</html>

提问者:情不知所起0 2016-12-20 20:03

个回答

  • 闻风_
    2016-12-21 02:00:29
    已采纳

    nodeName 属性: 节点的名称,是只读的。

    1. 元素节点的 nodeName 与标签名相同
    2. 属性节点的 nodeName 是属性的名称
    3. 文本节点的 nodeName 永远是 #text
    4. 文档节点的 nodeName 永远是 #document

    在除了ie浏览器中 你的con对象的内容其实是这样的

    <div id="con">空白节点
      <div> <p>javascript</p>空白节点
      <div>jQuery</div>空白节点
      <h5>PHP</h5></div>空白节点
    </div>

    在非ie浏览器中会算上空白节点

    这样就很好理解你为什么输出两个#text了 因为首 尾子节点都是空白节点

    所以输出的是两个#text

  • weibo_生活梦幻9_03168943
    2017-01-09 21:32:14

    建议使用firstElementChild和lastElementChild可排除空白节点