Javascript 遍历具有文本内容的 p 元素并获取值

Javascript traverse towards a p element with a text content and get the value

提问人:schnydszch 提问时间:11/20/2021 最后编辑:schnydszch 更新时间:11/22/2021 访问量:112

问:

我想使用纯 javascript 在 p 段落中获取带有前置文本的强标签的值。问题是这条记录甚至没有 id 或 class 元素,所以我不知道如何遍历。我有以下html要遍历:

<div class="panel-body">

<p>Short Title: <strong>Strengthening Compliance With Occupational Safety And Health Standards And Providing Penalties For Violations Thereof</strong>
...OMITTED for BREVITY..
<br>
Date Read: 
<strong>2016-07-26</strong>
... 
More p elements same the same pattern as above:
A Header (That I'm interested in to be able to identify what the text is about: <strong>The Text I am interested in</strong> 
...

</div>

我正在尝试评估,但似乎我无法得到我需要的东西:

var text = document.evaluate("//p[contains(., 'Short Title:')]/firstElementChild", document, null, XPathResult.ANY_TYPE, null );
console.log(text);

更新: 似乎我能够使用以下代码遍历我的文档:

var text = document.evaluate("//p[contains(., 'Short Title:')]/childNodes", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null );
if (text.singleNodeValue !== null) {
                    var Details = text.singleNodeValue.textContent;
                }
console.log(Details);

但问题是我也在 div 中获得了所有其他文本内容,如下所示:

Short Title: Strengthening Compliance With Occupational Safety And Health Standards And Providing Penalties For Violations ThereofDate Read: 2016-07-26

更新2: 显然,我试图在 p 元素内遍历的 html 文档有更多的标题,这些标题仅由中断“br”标签分隔,如下所示:

<p>Short Title: <strong>The Short Title</strong>
<br>
<strong>Principal Author/s:</strong>
Name of a lot of authors.
<br>
Date Read: 
<strong>2016-07-26</strong>

这可能是我的第一个 javascript 代码抛出 p 元素的所有 textcontent 的原因。

javascript xpath dom 遍历

评论


答:

1赞 ejose19 11/20/2021 #1

您可以简单地使用querySelector

const text = document.querySelector('p > strong').innerText

评论

0赞 schnydszch 11/21/2021
你好!我编辑了我的问题,因为我实际上有很多这样的模式,例如:文本标题:<strong>文本内容</strong><br>另一个文本标题:<strong>另一个文本内容</strong>。因此,我实际上可以遍历到这个具有同级(?)强元素的文本标题。