zoukankan      html  css  js  c++  java
  • js 选取子节点时去除非IE浏览器的换行符

    用childNOdes选择一个父节点的子节点时,非IE浏览器如FF,chrome把换行符也当做一个元素了。

    <div id="test">
        <div></div>
         <div></div>
         <div></div>
    </div>
     
    var a =document.getElementById("test").childNodes;  
    a在IE中是3,但在chrome中是7,是因为chrome把换行也当做一个元素了。
     
    可以用下面的方法去除换行符子节点
    function clearSpace(elem) {
        var elemchild = elem.childNodes;
        for (var i = 0; i < elemchild.length; i++) {
            var s = elemchild[i].nodeName;
            var r = elemchild[i].nodeValue;
            if (s == "#text" && /s/.test(r)) {
                contentdiv.removeChild(elemchild[i]);
            }
        }
    }
    上述函数遍历子元素,当元素里面有节点类型是文本并且文本类型节点的节点值是空的。就把他删除。

    nodeName可以得到一个节点的节点名字,在JS里的正则表达式s是表示包括空格、制表符、换页符等空白字符的其中任意一个。

    test() 方法用于检测一个字符串是否匹配某个模式.语法是: RegExpObject.test(string)

    如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

     

    其实还有另一种方法得到父节点的子节点数组,如

    var divarray = document.getElementById("test").getElementsByTagName("div");

    但是这里有一个问题:如果test的后代节点也有div,那么用getElementsByTagName("div")得到的数组长度要远大于3.所以还是清除换行符的方法比较可靠

     
     
  • 相关阅读:
    系统CLOCK 频率 C代码查看范例
    LINUX C 文件读写范例
    linux 打印机 打印机支持工作组 openprinting
    问题记录
    初步了解profile文件
    内核中的HZ 及延迟等
    LINUX_System_Call_Quick_Reference
    Linux基础篇 六 (bash shell基础 (vi /etc/shells))
    Android调用平台功能具体技巧分享
    男人35岁前要做好的几件事
  • 原文地址:https://www.cnblogs.com/xiang1336/p/3484823.html
Copyright © 2011-2022 走看看