猿问

获取的第一个子节点不是<p>?,为什么是text

<body>

<div id="con">

  <p>javascript</p>

  <div>jQuery</div>

  <h5>PHP</h5>

</div>

<script type="text/javascript">

var x=document.getElementById("con");

  document.write(x.firstChild.nodeName);

 document.write(x.lastChild.nodeName);

</script>

</script>

</body>

</html>


精慕门8588110
浏览 2043回答 5
5回答

柠檬酸钠

由于div#con和p之间有空格,在Chrome浏览器中空格是一个#text文本节点(大概是这样吧),如果这段代码在IE中执行就不会出现这种情况了。为了浏览器兼容可以使用这个函数function getChildren (ele) { var children = ele.childNodes; var arr = []; for (var i = 0; i < children.length; i++) { if (children[i].nodeType == 1) { arr.push(children[i]); } } return arr; }获取#con下面的第一个p元素var p = getChildren(document.getElementById('con'))[0]; alert(p);      //[object HTMLParagraphElement]

woshi123w

<div id="con"><div>jQuery</div><p>javascript</p><h5>PHP</h5></div>去掉节点之间的空白

Cassie_yu

除IE外,其余浏览器中 节点之间的空白符是文本节点。所以,以上代码中 id=con 的子节点总共有七个,分别为 空白节点、P、空白节点、DIV、空白节点、H5、空白节点。PS:仔细看 9-8 访问子节点childNodes中的内容。

Caballarii

因为除了IE,其它浏览器会把你的换行符(尽管你只是代码换行了),算成一个文本节点。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答