首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

DOM操作中TextNode惹的劳驾

2012-11-23 
DOM操作中TextNode惹的麻烦在DOM遍历中,IE会忽略空白文本节点,但是firefox、chrome等现代浏览器会把空白文

DOM操作中TextNode惹的麻烦
在DOM遍历中,IE会忽略空白文本节点,但是firefox、chrome等现代浏览器会把空白文本节点识别为TextNode,在访问诸如childNodes、firstChild、lastChild、nextSibling、previousSibling等节点时,可能会遇到TextNode。

  解决方法大致有2种:
以nodeType过滤(一般过滤掉nodeType等于3的文本节点即可);以tagName过滤(文本节点的tagName不存在);

例如获取nextSibling:

//nodeTypefunction getNextSibling(node){    var nextSibling = node.nextSibling;    while(nextSibling && nextSibling.nodeType !== 1){        nextSibling = nextSibling.nextSibling;    }    return nextSibling;}//tagNamefunction getNextSibling(node) {  var nextSibling = node.nextSibling;  while(nextSibling && !nextSibling.tagName){  nextSibling = nextSibling.nextSibling;  }  return nextSibling;}


不知道还有没有其它好方法?


补充一下,dom.children(不含空白孩子节点)方法虽然不是w3c标准,但是实际上各个浏览器基本都支持,也算事实标准了。


更新:
最新的浏览器支持以下dom标准,去除空白节点、文本节点:
childElementCount
children
lastElementChild
nextElementSibling
previousElementSibling

https://developer.mozilla.org/en/DOM/element.firstElementChild

不过IE只支持children。 1 楼 luobin23628 2010-01-21   第二种方法
如果下一个结点还是文本节点呢 2 楼 鹤惊昆仑 2010-01-21   谢谢luobin23628指正,已修改。

热点排行