问答详情
源自:9-8 访问子节点childNodes

节点值的问题

  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>");
  }


提问者:锦鳞抄 2016-04-26 11:57

个回答

  • 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
    //得到的就是文本节点的值

  • 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

    文本节点的值是文本本身

  • 锦鳞抄
    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么?