节点值的问题

来源:9-8 访问子节点childNodes

锦鳞抄

2016-04-26 11:57

  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回答

  • alwynxu
    2016-05-01 16:12:46
    已采纳

    因为你获取的是节点,所以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
    //得到的就是文本节点的值

    锦鳞抄

    非常感谢!

    2016-05-04 11:27:37

    共 1 条回复 >

  • kuban
    2016-04-29 15:25:23

    引用9-7对nodeValue的说明

    二、nodeValue 属性:节点的值

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

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

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

  • qaz_0578
    2016-04-26 16:10:49

    元素节点的值,是 undefined 或 null

    文本节点的值是文本本身

    锦鳞抄

    因为第一个javascript没有加标签所以是文本,后面的三个加了标签所以变成节点,这样理解对吧? 谢谢~!

    2016-04-26 16:26:17

    共 1 条回复 >

  • 锦鳞抄
    2016-04-26 11:58:40

    第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么?


JavaScript进阶篇

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

468061 学习 · 21891 问题

查看课程

相似问题