Node的textContent属性

有时需要查询纯文本形式的元素内容,或者在文档中插入纯文本。标准的方法是用Node的textContent属性来实现:



var para=document.getElementsByTagName("p")[0];

//文档中第一个<p>

var text=para.textContent;

//文本是"This is a simple document."

para.textContent="Hello World!";

//修改段落内容


textContent属性在除了IE的所有当前的浏览器中都支持。在IE中,可以用Element的innerText属性来代替。


下面简单实现一个textContent()函数,它递归地遍历元素的子节点,然后连接后代节点中所有的Text节点的文本。为了理解代码,回想一下nodeValue属性(定义在Node类型中),它保存Text节点的内容。


//返回元素e的纯文本内容,递归进入其子元素

//该方法的效果类似于textContent属性

function textContent(e){

    var child,type,s="";//s保存所有子节点的文本

    for(child=e.firstChild;child!=null;child=child.nextSibling){

        type=child.nodeType;

        if(type===3){//Text节点

            s+=child.nodeValue;

        } else if (type===1){//递归Element节点

            s+=textContent(child);

        }

    }

    return s;

}


textContent属性就是将指定元素的所有后代Text节点简单地串联在一起。


640?wx_fmt=jpeg