如何过滤空白节点?
方法一
原理:将满足条件的节点添加到数组里
function fileterSpaceNode(node)
{
var ret = [] ; //新数组
var pattern = /^\s+$/ ; //为了优化性能,将模式字符串保存在变量中
for( var i = 0; i < node.childNodes.length )
{
var node_child = node.childNodes[i] ;
//如果匹配到空的文本节点,就不添加数组
if( node_child.nodeType == 3 && pattern.test(node_child.nodeValue) )
{
//把每次的元素节点,添加到数组里
ret.push( node_child ) ;
}
}
return ret ; //返回非空白节点的节点数组
}
方法二
原理:将匹配到的空白节点从nodesList中删除
function cleanBlank(element)
{
var pattern = /\S/ ; //同理,注意这里的模式字符串的写法,对结果取反,表达的含义相同
for ( var j = 0; j < element.childNodes.length; j++ )
{
var elem_child = element.childNodes[j];
//如果匹配到空白节点就将其删除
if(elem_child.nodeType == 3 && !pattern.test(elem_child.nodeValue))
{
element.removeChild(elem_child);
}
}
}