我们知道通过浏览器自带的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
>