javascript获取节点的文本值

转自:http://www.cnblogs.com/wbkt2t/archive/2009/12/06/1618222.html


javascript获取节点的文本值

我们知道通过浏览器自带的innerHTML属性能够获取节点的所包含的字符串的值,比如有如下节点:

    
    
    
    
< div id ="test" >< strong > i'm strong </ strong ></ div >
  

 

通过 

    
    
    
    
var obj = document.getElementById( " test " );

alert(obj.innerHTML);
// 返回的值是<strong>i'm strong</strong>

 

如果我想得到节点的文本值,也就不包括标签以为的字符串,怎么办呢。这里的文本值是:i'm strong

复制代码
    
    
    
    
// 非Mozilla浏览器:

obj.innerText;

// 其他的浏览器

obj.firstChild.nodeValue;
复制代码

先提供一个通用的方法来解决兼容问题:

完整代码如下:

 

复制代码
     
     
     
     
< html >
< head >
< title > title </ title >
</ head >
< body >

< div id ="test" >< strong > i'm strong </ strong ></ div >
< script type ="text/javascript" >
var obj = document.getElementById( " test " );

// 兼容浏览器获取节点文本的方法
function text(e)
{
var t = "" ;

// 如果传入的是元素,则继续遍历其子元素
// 否则假定它是一个数组
e = e.childNodes || e;

// 遍历所有子节点
for ( var j = 0 ;j < e.length;j ++ ){
// 如果不是元素,追加其文本值
// 否则,递归遍历所有元素的子节点
t += e[j].nodeType != 1 ?
e[j].nodeValue:text(e[j].childNodes);
}
// 返回区配的文本
return t;
}
alert(text(obj))
</ script >
</ body >
</ html >
复制代码

 

你可能感兴趣的:(javascript获取节点的文本值)