clearTxtNode : function(Elm)
{
if( ! Elm)
{
return;
}
var dchilds = Elm.childNodes, dchild = null;
for(var i = 0; i < dchilds.length; i ++ )
{
dchild = dchilds[i];
if(dchild.nodeType == 3 && ! dchild.nodeValue.replace(/\s/g, ''))
{
Elm.removeChild(dchild);
}
}
}
{
if( ! Elm)
{
return;
}
var dchilds = Elm.childNodes, dchild = null;
for(var i = 0; i < dchilds.length; i ++ )
{
dchild = dchilds[i];
if(dchild.nodeType == 3 && ! dchild.nodeValue.replace(/\s/g, ''))
{
Elm.removeChild(dchild);
}
}
}
{
return;
}
什么意思
有时为了操作节点方便,需要清除
下面 是 Elm 为空时,返回
不是非空时,返回if (!Elm) {
return;
}------------------------------ if(dchild.nodeType == 3 && ! dchild.nodeValue.replace(/\s/g, '')) if (dchild是文本节点 并且 dchild是空白节点 )
alert(!null); // true
alert(!undefined); // true
虽然代码执行正确,但是编码方式很垃圾!建议改为
function IsNullOrUndefined(value) {
return value === null || value === undefined;
}// ...
if(IsUndefinedOrNull(Elm))
{
return;
}
// ...
代码就应该清楚明了,否则就是垃圾!
function IsNullOrUndefined(value) {
return value === null || value === undefined;
}// ...
if(IsNullOrUndefined(Elm))
{
return;
}
// ...alert(!""); // truenodeType == 3 表示该节点为元素节点,后半句表示节点内容非空,建议改为function IsElementNode(node) {
return node.nodeType == 3;
}function NodeValueIsEmpty(node) {
return node.nodeValue.replace(/\s/g, '') == "";
}if(IsElementNode(dchild) && !NodeValueIsEmpty(dchild))
代码就应该清楚明了!
clearTxtNode : function(Elm)
{
if(IsNullOrUndefined(Elm))
return;
var dchilds = Elm.childNodes, dchild = null;
for(var i = 0, len = dchilds.length; i < len; i++)
{
dchild = dchilds[i];
if(IsElementNode(dchild) && NodeValueIsNotEmpty(dchild))
{
Elm.removeChild(dchild);
}
}
}function IsNullOrUndefined(value) {
return value === null || value === undefined;
}function IsElementNode(node) {
return node.nodeType == 3;
}function NodeValueIsNotEmpty(node) {
return node.nodeValue.replace(/\s/g, '') != "";
}
注意,还有一个非操作符(!)
if(!Elem) { return }
这句话的意思是:1. 如果Elem为null, undefined, '', 0中的任何一个,那么!Elem布尔表达式将返回true, 执行return
2. 如果Elem为其他值,跳过return,继续执行代码。所以如果Elem为空,则代码不会往下继续执行,这本来就是我们想要的
{/*清除指定DOM节点Elm下的#text节点(标签之间的空白节点)*/
if( ! Elm)
{/*如果未指定DOM节点或该节点不存在,则退出此程序*/
return;
}
var dchilds = Elm.childNodes, dchild = null;/*取该节点下所有子节点*/
for(var i = 0; i < dchilds.length; i ++ )
{/*遍历它们,如果发现它们中有谁是#text节点,则移除*/
dchild = dchilds[i];
if(dchild.nodeType == 3 && ! dchild.nodeValue.replace(/\s/g, ''))
{
Elm.removeChild(dchild);
}
}
}