首页 > 解决方案 > 如何在不创建 HtmlElement 的情况下从 HTML 字符串中提取 textContent?

问题描述

我最近遇到了一个问题,我需要先从数据中去除 html 标签,然后再将其显示在屏幕上。
数据是这样来的:

<p><span style="color: rgb(68, 68, 68);">Sample data which i want to get.</span></p>

我尝试
了什么 为了解决这个问题,我创建了一个 div,添加了 htmlinnerHtml并使用textContent.

function strip(html)
{
   var tmp = document.createElement("DIV");
   tmp.innerHTML = html;
   return tmp.textContent || tmp.innerText || "";
}

以上代码取自stackoverflow。

我担心的问题
是这样做是否正确,因为每次调用strip函数时都会创建额外的 div。

问题
有没有更好的方法来做到这一点?

标签: javascripthtml

解决方案


也许这对你有帮助。

以下示例使用另一种方法。它不是提取文本,而是使用正则表达式删除标签,假设您的数据是 html 字符串。

限制:如果您的文本内容包含 < 或 > 字符,则此正则表达式不起作用。如果这是一个问题,您需要修改正则表达式。

var str = '<p><span style="color: rgb(68, 68, 68);">Sample data which i want to get.</span></p>';
var str2 = '<p><span style="color: rgb(68, 68, 68);">Sample data which i <strong>want</strong> to get.</span></p>';

function strip(html) {
    return html.replace(/<\s*[^>]*>/gi, '');
}

console.log(strip(str));
console.log(strip(str2));


推荐阅读