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;}