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

来源:9-9 访问子节点的第一和最后项

情不知所起0

2016-12-20 20:03

<!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>

写回答 关注

2回答

  • 闻风_
    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

    闻风_

    这里的空白节点 就是代表空的文本节点(用字符串表示就是“”)

    2016-12-21 02:01:23

    共 1 条回复 >

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

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

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

467396 学习 · 21877 问题

查看课程

相似问题