<!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>
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
建议使用firstElementChild和lastElementChild可排除空白节点