javascript - 从保留换行符的 DOM 中提取未格式化文本的最佳方法?

标签 javascript dom

假设我在 HTML 中有以下元素 TEXT:

<div id="TEXT">
  <p>First <strong>Line</strong></p>
  <p>Seond <em>Line</em></p>
</div>

如何从这个元素中提取原始文本,不带 HTML 标签,但保留换行符?


我知道以下两个选项,但它们似乎都不完美:

  1. document.getElementById("TEXT").textContent
    • 返回
      • 第一行第二行
    • 问题:忽略了段落之间应该包含的换行符
  2. document.getElementById("TEXT").innerText
    • 返回
      • 第一行 第二行
    • 问题:不是 W3C 标准的一部分,不能保证在所有浏览器中都能正常工作

最佳答案

这是一个获取任何元素的文本内容的便捷函数,它在所有平台上都运行良好,是的,它保留了换行符。

function text(e){
    var t = "";
    e = e.childNodes || e;
    for(var i = 0;i<e.length;i++){
        t+= e[i].nodeType !=1 ? e[i].nodeValue : text(e[i].childNodes);
    }
    return t;
}

关于javascript - 从保留换行符的 DOM 中提取未格式化文本的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38291577/

相关文章:

jquery - 在 jQuery 中通过索引获取元素

javascript - 更改多行文本中每一行的文本对齐方式

javascript - 如何将整数转换为数字数组

javascript - Jquery Accordion 关闭

javascript面向对象的函数内调用函数或var内调用函数

javascript - 创建一个绑定(bind)到 AngularJS 中其他输入的计算值数组

delphi - TWebBrowser 的 HTML 源代码 - 如何检测流编码?

javascript - 如何将所有窗口警报发送到一个文本框

javascript - 我收到未捕获的类型错误 : Cannot set property 'onclick' of null?

javascript - 处理字符串中存在的 ASCII 代码