js如何获取文本节点的值?

JavaScript020

js如何获取文本节点的值?,第1张

两种方法:

比如有个文本节点:<div id="test"><strong>this is value</strong></div>

1、通过document对象获取:

var obj=document.getElementById("test")

//非Mozilla浏览器:

obj.innerText

2、其他的浏览器

obj.firstChild.nodeValue

1、用 childNodes 属性,按顺序取

实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。

//pId 待取节点父节点序号

//cId 待取节点序号

function getXmlNodeValue(pId, cId) {

    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

    xmlDoc.async = false

xmlDoc.load("employeeInfo.xml")

var nodes = xmlDoc.documentElement.childNodes[pId].childNodes[cId]return nodes.childNodes[0].text

}

调用方法:alert(getXmlNodeValue(1, 2))

2、用 for 循环来取

实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。

//nodeValue 待取节点的所属节点值

function getXmlNodeValueFor(nodeValue){    

    var xmlDoc 

  try { 

    //创建一个 ie 支持的 XML 文档对象 

    xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

  }catch(e){

      try{

      //创建FireFox空的XML文档对象

      xmlDoc=document.implementation.createDocument("","",null)

}catch(e){

  alert(e.message)

  return ""

}

}

xmlDoc.async = false

try { 

    xmlDoc.load("employeeInfo.xml")

}catch(e){

    alert(e.message)

    return ""

}

var xd=xmlDoc.documentElement.childNodes

if(xd==null) 

    return ""

 var tempValue

for(var i=0i<xd.lengthi++){

    if(xd[i].childNodes[0].childNodes[0].nodeValue==nodeValue)        tempValue=xd[i].childNodes[2].childNodes[0].nodeValue

}

return tempValue

}

调用方法:alert(getXmlNodeValueFor("王佳琳"))

getElementsByTagName("标签名称") 代表查询返回所有该标签的元素,因此他是个集合

document.getElementsByTagName("标签") 即查询文档中所有的该标签元素

alert(document.getElementsByTagName("div").length) 返回查询结果的数量,这里结果为 1

你想要该元素的文本应该这么写 document.getElementsByTagName("div")[0].innerHTML

取第一个div的html文本

============================

其他示例

<html>

<head><title>test</title></head>

<script type="text/javascript">

//搜索文档下第一个div下的span子节点

window.onload = function () {//文档加载完毕事件

var div1 = document.getElementsByTagName("div")[0]//文档第一个DIV

var spans = div1.getElementsByTagName("span")//该DIV下的所有SPAN标签元素

for (var i = 0i <spans.lengthi++) {//循环弹出每个SPAN标签的文本

alert(spans[i].innerHTML)

}

}

</script>

<body>

<div><span>文本1</span><span>第二个文本</span><span>文本叁</span></div>

</body>

</html>