zoukankan      html  css  js  c++  java
  • 获取元素的文本

    记得John Resig说过,类库就是用来屏蔽浏览器的差异,但他的getText函数就明显做不到这一点,怎么没人去提醒他一下呢?我的英文特烂,阅读还可以,但要我正经八儿地写几句英文,估计句句都是病句……不说了,看下面测试(如果在IE下报错,请刷新当前页面):

    IE下明显少了空行与空白,因为IE会自动删除空白节点。所以,要让所有浏览器保持一下,就只有去掉空白节点了。还有,我不明白jQuery会把所有匹配元素的文本串成一个,为何不返回一个字符串数组呢,省得到时我们还要一个个分解……

    下面是我的方案:

          //@author:司徒正美(zhongqincheng)
          //获取某个节点的文本,如果此节点为元素节点,则取其childNodes的所有文本,
          //为了让结果在所有浏览器下一致,忽略所有空白节点,因此它非元素的innerText或textContent
          var getText = function(nodes){
            var result = "",node;
            for(var i=0,n=nodes.length;i<n;i++){
              node = nodes[i];
              //如果是文本节点或者CDATA节点
              if ( node.nodeType === 3 || node.nodeType === 4 ) {
                if(!/^\s+$/.test(node.nodeValue))//忽略空白节点与换行符
                  result += node.nodeValue;
                //如果是元素节点
              } else if ( node.nodeType === 1 ) {
                result += getText( node.childNodes );
              }
            }
            return result;
          }
    

    看一下效果:

  • 相关阅读:
    【计算机视觉】深度学习视觉领域常用数据集汇总
    【计算机视觉】常用图像数据集
    【计算机视觉】ImageNet介绍
    【神经网络与深度学习】卷积与反卷积
    【视频开发】【计算机视觉】全景视频拼接关键技术
    【计算机视觉】分辨率与超分辨率图像重建
    【计算机视觉】【神经网络与深度学习】深度学习在图像超分辨率重建中的应用
    【VS开发】【C/C++开发】关于boost库的C++11导致的undefined符号问题
    【VS开发】【C/C++开发】vs2015编译boost 64位
    【视频开发】【计算机视觉】相机标定(Camera calibration)《二》
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1666752.html
Copyright © 2011-2022 走看看