您的位置:首页 > Web前端 > HTML

获取html节点时过滤空白节点

2015-06-27 18:25 696 查看
在非 IE 中,标准的 DOM 具有识别空白文本节点的功能,而 IE 自动忽略了,如果要保持一致的子元素节点,需要手工忽略掉它。

var body = document.getElementsByTagName('body')[0]; // 获取 body 元素节点

//过滤空白节点

function filterSpaceNode(nodes) {

var ret = []; // 新数组

for (var i = 0; i < nodes.length; i ++) {

// 如果识别到空白文本节点,就不添加数组

if (nodes[i].nodeType == 3 && /^\s+$/.test(nodes[i].nodeValue)) continue;

// 把每次的元素节点,添加到数组里

ret.push(nodes[i]);

}

return ret;

}

上面的方法,采用的忽略空白文件节点的方法,把得到元素节点累加到数组里返

回。那么还有一种做法是,直接删除空位文件节点即可。

function filterSpaceNode(nodes) {

for (var i = 0; i < nodes.length; i ++) {

if (nodes[i].nodeType == 3 && /^\s+$/.test(nodes[i].nodeValue)) {

// 得到空白节点之后,移到父节点上,删除子节点

nodes[i].parentNode.removeChild(nodes[i]);

}

}

return nodes;

}

如果 firstChild 、 lastChild 、 previousSibling 和 nextSibling 在获取节点的过程中遇到

空白节点,我们该怎么处理掉呢?

function removeWhiteNode(nodes) {

for (var i = 0; i < nodes.childNodes.length; i ++) {

if (nodes.childNodes[i].nodeType === 3 &&

/^\s+$/.test(nodes.childNodes[i].nodeValue)) {

nodes.childNodes[i].parentNode.removeChild(nodes.childNodes[i]);

}

}

return nodes;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: