javascript - 使用innerText从隐藏的HTML元素中检索文本

标签 javascript html

我需要从用 css 隐藏的 html 元素中获取文本。我知道根据规范,innerText 将遵守 css 规则。但是使用 textContent 的替代方法会忽略我需要保留在字符串中的换行符和制表符。

有什么办法可以解决这个问题吗?

为简单起见,请参阅以下示例:

const inntxt = document.querySelector('.expandable').innerText
console.log(inntxt) // Here we don't get the hidden div's text.

const txtct = document.querySelector('.expandable').textContent

console.log(txtct) // Here the result removes the line break.
.hidden{
  display: none;
}
<div class='expandable'>
  <span class='visib'>
    Red balloon
  </span>
  <br>
  <span class='hidden'>
    Yellow badge<br>Green ribbon
  </span>
</div>

我想解决这个问题的一种方法是替换 <br>使用我自己的字符,例如 # 通过附加它而不是 <br> ,但一定有更好的方法不是吗?

更新

更清楚地说,最终结果应该是:

例如,如果您要console.log()节点中的字符串,那么来自innerText或textContent的字符串应该是: '红气球\n黄色徽章\n绿丝带'

最佳答案

textContent 是非常不直观的不检索<br>新线路。

我建议在 Javascript 中使用 innerHTML 来使用虚拟元素并替换所有 <br>\n<br> .

看看这段代码,我认为它解决了您的问题:

const expandable = document.querySelector('.expandable')
const auxEl = document.createElement('div')
auxEl.innerHTML = expandable.innerHTML.replace(/(\<br\>)/, '\n$1')
const textContent = auxEl.textContent

console.log({ textContent })

/* Yields
{
  "textContent": "\n  \n    Red balloon\n  \n  \n    Yellow badge\nGreen ribbon\n  \n"
}
*/
.hidden {
  display: none;
}
<div class='expandable'>
  <div class='visib'>
    Red balloon
  </div>
  <div class='hidden'>
    Yellow badge<br>Green ribbon
  </div>
</div>

关于javascript - 使用innerText从隐藏的HTML元素中检索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59897217/

相关文章:

javascript - 尝试修复带有下拉菜单的导航栏到页面顶部

javascript - 如何根据字典中的不同值返回键的值

javascript - 如何使用 jQuery 检查选​​择框或文本输入是否为空

javascript - 用于检测浏览器宽度和高度的 JS 在 Chrome 和 Safari 中有效,但在 IE9 或 FF9 中无效

javascript - 如何将 HTML5 桌面通知的关闭时间更改为不自动关闭?

javascript - 设置属性文本参数

javascript - 如何使用 jQuery 淡入

Chrome 中的 JavaScript 警报()

javascript - 通过点击标签来充值

html - <div> 位置 :absolute; bottom: 0; not working as expected in IE7