如何用js去除元素之间的空格?

2024-12-16 18:41:15
推荐回答(2个)
回答1:

取出两个undefined是因为在ff中,会将元素内的换行当成一个空的文本节点来处理。

有两种办法可以忽略掉空的文本节点:

第一种,根据nodeType过滤掉空文本节点:

function getFirstChild(parent) {
    if(parent && parent.nodeType == '1') {
        var node = parent.firstChild;
        while(node.nodeType != 1) {
            node = node.nextSibling;
        }
        
        return node;
    }
}

 第二种办法,用children[0]获取第一个节点,比如:

    first span



document.getElementById('c').children[0]取到的就是第一个span。
另外,children在IE中会将注释当作节点包含在内,需要注意一下,比如下面这种结构:

    

    Span


在IE中使用document.getElementById('c').children[0],获取到的是,而不是Span


nodeType返回值代表的含义:

返回值    节点类型

1             Element                        元素节点

2             Attr                               属性节点

3             Text                              文本节点

4             CDATASection             

5             EntityReference           文档中的实体引用部分

6             Entity                           文档中的实体

7             ProcessingInstruction  处理指令

8             Comment                     注释

9             Document                    整个文档(文档根节点)

10           DocumentType            向为文档定义的实体提供接口

11           DocumentFragment    轻量级的 Document 对象,能够容纳文档的某个部分

12           Notation                       代表 DTD 中声明的符号


各类节点的子节点:

节点类型    子节点类型

1                1、3、4、5、7、8

2                3、5

3                无子节点

4                无子节点

5                1、3、4、5、7、8

6                1、3、4、5、7、8

7                无子节点

8                无子节点

9                1、7、8、10

10              无子节点

11              1、3、4、5、7、8

12              无子节点

回答2:

";
str = str.replace(/[ ]/g,""); //替换所有空格!

==================== 详细点就是 ==================
var sname = document.getElementsByName("name").value;
sname = sname.replace(/[ ]/g,""); //替换所有空格!
if(sname == "")
{
alert("name 输入为空");
}

相关问答