有没有一种方法可以提取DOM元素周围的文本?

时间:2020-06-16 08:04:57

标签: javascript html dom text

<div>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.<sup>2</sup> Tecum
    optime, deinde etiam cum mediocri amico.<sup>2</sup> Idem iste, inquam, de voluptate
    quid sentit?
  </p>

  <p>
    Bonum liberi: misera orbitas. Oratio me istius philosophi non offendit; Hoc
    sic expositum dissimile est superiori. Cave putes quicquam esse verius. Quae
    ista amicitia est?
  </p>

  <p>
    Duo Reges: constructio interrete.<sup>3,4</sup> Ita nemo beato beatior.
    Efficiens dici potest.<sup>5</sup> Consequentia exquirere, quoad sit id,
    quod volumus, effectum. Tubulo putas dicere?
  </p>

  <p>
    Haec para/doca illi, nos admirabilia dicamus. Bonum valitudo: miser morbus.
    Equidem e Cn. Respondent extrema primis, media utrisque, omnia omnibus. At
    ille pellit, qui permulcet sensum voluptate.
  </p>

  <p>
    Recte dicis; Frater et T. Cur post Tarentum ad Archytam? De quibus cupio
    scire quid sentias. Primum quid tu dicis breve?<sup>5</sup> 
  </p>
</div>

对于每个sup元素,我如何检索该元素周围的文本?

对于第一个<sup>2</sup>,我如何检索<sup>2</sup>左边的10个字符(“ ceel elit。”)和{{}右边的10个字符(“ Tecum opti”) {1}}?

<sup>2</sup>

我找不到任何可行的方法来实现这一目标。我什至不确定这在技术上是否可行。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用previousSibling(和nextSibling):

Array.from(document.querySelectorAll("sup"), function (elem) {
    console.log(elem.previousSibling.textContent.slice(-10));
});
<div>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.<sup>2</sup> Tecum
    optime, deinde etiam cum mediocri amico.<sup>2</sup> Idem iste, inquam, de voluptate
    quid sentit?
  </p>

  <p>
    Bonum liberi: misera orbitas. Oratio me istius philosophi non offendit; Hoc
    sic expositum dissimile est superiori. Cave putes quicquam esse verius. Quae
    ista amicitia est?
  </p>

  <p>
    Duo Reges: constructio interrete.<sup>3,4</sup> Ita nemo beato beatior.
    Efficiens dici potest.<sup>5</sup> Consequentia exquirere, quoad sit id,
    quod volumus, effectum. Tubulo putas dicere?
  </p>

  <p>
    Haec para/doca illi, nos admirabilia dicamus. Bonum valitudo: miser morbus.
    Equidem e Cn. Respondent extrema primis, media utrisque, omnia omnibus. At
    ille pellit, qui permulcet sensum voluptate.
  </p>

  <p>
    Recte dicis; Frater et T. Cur post Tarentum ad Archytam? De quibus cupio
    scire quid sentias. Primum quid tu dicis breve?<sup>5</sup> 
  </p>
</div>