【问题标题】:Get text node value in DOM获取 DOM 中的文本节点值
【发布时间】:2016-02-13 07:43:22
【问题描述】:

我是 DOM 新手。我想在这个 xml 文件 http://www.w3schools.com/xml/books.xml 中获取带有标签 title 的第一个节点的文本,它是 Everyday Italian。答案应该是这样的:

var x = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;

据我所知,

xmlDoc.getElementsByTagName("title")[0]

从包含所有标题标签节点的数组中获取第一个标题节点。而如果我想得到那个节点的文本,不应该是这样的吗?

xmlDoc.getElementsByTagName("title")[0].nodeValue

为什么它与 childNodes 有关系?这是什么类型的?

xmlDoc.getElementsByTagName("title")[0].childNodes[0]

【问题讨论】:

    标签: javascript xml dom


    【解决方案1】:

    在这种情况下,文本内容表现为childNode。可能是换行符或其他字符导致这种情况发生。 (例如,参见here

    无论哪种方式,您都可以按如下方式访问内容:

    xmlDoc.getElementsByTagName("title")[0].innerHTML
    

    【讨论】:

      【解决方案2】:

      来自http://www.w3schools.com/xml/dom_nodes_get.asp -

      '在DOM中,一切都是一个节点。元素节点没有文本值。 元素节点的文本值存储在子节点中。该节点称为文本节点。'

      xmlDoc.getElementsByTagName("title")[0] // first title element node
      

      因此,需要 .childNodes[0] 才能访问其文本节点,该节点是存储文本值的位置

      【讨论】:

      • 我尝试了childNodes[0] 并得到了text 的值(没多大用处!)
      【解决方案3】:
      var x = xmlDoc.getElementsByTagName("title")[0].childNodes[0].textContent;
      

      我尝试了innerHTMLchildNodes[0],但都没有成功 - 只有上面的方法对我有用。

      来源:Node.textContent - Mozilla WebDocs

      【讨论】:

        猜你喜欢
        • 2010-10-20
        • 2011-09-18
        • 2020-06-21
        • 1970-01-01
        • 2012-05-01
        • 2010-11-30
        • 2014-03-20
        • 2017-09-10
        相关资源
        最近更新 更多