首页 > 解决方案 > 如何获取 HTML 文档特定部分(范围、片段)的 innerText?(即不是整个 HTML 元素)

问题描述

#div2{
  text-transform:uppercase
}
#invisible{
  display:none
}
<div id='container'>
    <div id='div1'>
        <span>some text</span>
        <div>
            <span>some text</span>
            <div id='div2'>text2</div>
        </div>
    </div>
    <div id='invisible'>invisible text</div>
    <div id='div3'>text3</div>
</div>

假设我想从 div2 到 div3 获取文档的一部分的 innerText ,所以我应该得到以下文本值:

TEXT2
text3

我怎样才能得到那个值?

我可以通过Range对象选择 HTML 文档的某些部分,但 Range 对象没有 innerText 属性。(我说的是 innerText,而不是 textContent,因为我希望提取的文本看起来与浏览器中呈现的版本相同,即尊重 CSS 属性,如、displayvisibility等)white-spacetext-transform

标签: javascriptdom

解决方案


如果你想要内部文本,你可以使用 jQuery:

var div1 = $("#div1");
var div1Content = (div1.length === 0) ? "div1 was not found or some relevant error message" : div1.text();

// or if you are confident your div1 will exist:
var div1Content = $("#div1").text();

或者,JavaScript:

var div1Content = document.getElementById("div1")?.innerText ?? "div1 was not found or some relevant error message";

推荐阅读