论坛首页 Web前端技术论坛

为什么childNodes.length总是大于节点个数?

浏览 4121 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-02  
如果你创建这样子一个html文档:
java 代码
  1. ...  
  2.    《body...  
  3.            〈div...  
  4.                 〈ul...  
  5.                     〈img...  
  6. ...  

然后你使用document.body.childNodes.length看看,有几个节点, 你可能认为它会输出3,可是实际的值远大于3为什么?因为childNodes包含的不仅仅只有html节点,所有属性,文本等都包含在childNodes里面,你可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才使元素节点, 2是属性节点,3是文本节点。
         要获得一个元素的文本,比如要获得一个P节点的文本,有的人喜欢使用innerHTML,更改也是一样,其实这不太好,因为使用innerHTML浏览器会认为你要插入的东西是一段标签文本,而你只想插入一段纯文本,这就导致浏览器试图去解析你的那段纯文本,这会造成不必要的资源浪费。所以建议使用element.firstChild.nodeValue,为什么是firstChild呢?因为childNodes[0]就是文本节点,不信你可以看看它的nodeType。
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics