为了账号安全,请及时绑定邮箱和手机立即绑定

节点值的问题

  var a = document.getElementsByTagName("div")[0].childNodes;
  for(var i = 0; i < a.length ; i++){
    document.write("第" + i + "个子节点名是:"+ a[i].nodeName + "<br>");          
    document.write("第" + i + "个子节点值是:"+ a[i].nodeValue + "<br>");
    document.write("第" + i + "个子节点类型是:"+ a[i].nodeType + "<br>");
  }


正在回答

4 回答

因为你获取的是节点,所以element.nodeValue是获取的节点本身的值,而并非开始和结束的元素节点中间的文本,文本和元素都是节点,但是两者是不一样的,要想进一步获取元素节点之间的文本需要进一步获取其文本子节点,通过element.childeNodes[j].nodeValue.

举个例子:

<ul>
    <li>第一个li</li>
</ul>

var element = document.getElementsByTagName("ul")[0].childNodes(); //获取的是ul的子节点的集合,
//element[0].nodeValue获得是li元素节点的值,元素节点的nodeValue为undefined或null。
//要想获得li元素节点所包含的文本节点值,而该文本节点是li的子节点,就需要进一步获取li的子节点,再通过nodeValue
//得到的就是文本节点的值

1 回复 有任何疑惑可以回复我~
#1

锦鳞抄 提问者

非常感谢!
2016-05-04 回复 有任何疑惑可以回复我~

引用9-7对nodeValue的说明

二、nodeValue 属性:节点的值

1. 元素节点的 nodeValue 是 undefined 或 null
2. 文本节点的 nodeValue 是文本自身

3. 属性节点的 nodeValue 是属性的值

文本部分就是文本节点,标签就是元素节点,标签里面的文字是文本节点,所以,你如果想要输出标签里的文字,该是a[i].childNodes[0].nodeValue

1 回复 有任何疑惑可以回复我~

元素节点的值,是 undefined 或 null

文本节点的值是文本本身

0 回复 有任何疑惑可以回复我~
#1

锦鳞抄 提问者

因为第一个javascript没有加标签所以是文本,后面的三个加了标签所以变成节点,这样理解对吧? 谢谢~!
2016-04-26 回复 有任何疑惑可以回复我~

第0个子节点名是:#text
第0个子节点值是:javascript
第0个子节点类型是:3
第1个子节点名是:P
第1个子节点值是:null
第1个子节点类型是:1
第2个子节点名是:DIV
第2个子节点值是:null
第2个子节点类型是:1
第3个子节点名是:H5
第3个子节点值是:null
第3个子节点类型是:1


这是是显示的值,为什么节点值是null? 不应该依次输出javascript   javascript   jQuery PHP么?


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468044    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

节点值的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信