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.所以还是清除换行符的方法比较可靠

     
     
  • 相关阅读:
    Uva1595 对称轴
    Uva712 S树
    Uva673 平衡的括号
    leetcode102 二叉树的层次遍历
    Uva10191 复合词
    C++ multimap的用法
    Uva1103 古代象形符号
    UVa10763 交换学生
    C++ 优先级队列 priority_queue
    ios,zepto穿透解决方案
  • 原文地址:https://www.cnblogs.com/xiang1336/p/3484823.html
Copyright © 2011-2022 走看看