Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodeValue返回null(深入理解)_Javascript_Nodevalue - Fatal编程技术网

Javascript nodeValue返回null(深入理解)

Javascript nodeValue返回null(深入理解),javascript,nodevalue,Javascript,Nodevalue,其思想是控制台日志节点值。但它不返回名称,而是返回null。我不明白为什么,因为代码对我来说很好。所以,我想知道发生了什么。我发现了如何使它工作,但我不明白为什么我的代码不工作。代码和结果: HTML 结果: 因为Done在您的li中是一个节点,所以文本不仅仅是HTML标记 更新后的代码: let listNode=document.body.children[1].children[1] console.log(listNode) //为什么不返回节点值? let value=listNod

其思想是控制台日志节点值。但它不返回名称,而是返回null。我不明白为什么,因为代码对我来说很好。所以,我想知道发生了什么。我发现了如何使它工作,但我不明白为什么我的代码不工作。代码和结果:

HTML

结果:
因为
Done
在您的
li
中是一个节点,所以文本不仅仅是
HTML
标记

更新后的代码:

let listNode=document.body.children[1].children[1]
console.log(listNode)
//为什么不返回节点值?
let value=listNode.childNodes[0].nodeValue;
console.log(值)
用户:
  • 约翰
  • 母鹿

在JavaScript中表示HTML元素(DOM对象)时,所有内容都是一个节点——甚至是元素中的文本因此,当您获得对
  • 的引用时,
  • 不是包含名称的节点,而是该
  • 的子文本节点。另一种说法是元素节点从来没有自己的值,它们的子节点有,这就是为什么当您试图获取
  • 节点值时,会得到
    null

    要获取该内容,您必须一直导航到该节点:

    //获取#myList列表中所有
  • 子元素的节点列表: 让listNodes=document.queryselectoral(#myList>li); //转到节点列表中的第一个
  • ,然后导航该节点中包含的文本节点 let value=listNodes[0]。firstChild.nodeValue; log(
  • .firstChild节点值为:“+value”); log(
  • 节点类型为:“+listNodes[0].nodeType+”(1=元素节点)”; console.log(
  • .firstChild节点类型为:“+listNodes[0].firstChild.nodeType+”(3=文本节点)”
    用户:
    
    • 约翰
    • 母鹿
     <div>Users:</div>
      <ul id="myList">
        <li>John</li>
        <li>Doe</li>
      </ul> 
    
    let listNode = document.body.children[1].children[1]
    
    console.log(listNode)
    
    // Why not return node value?
    let value = listNode.nodeValue
    console.log(value)