要从富文本中去掉 HTML 和 CSS 样式,只保留纯文本,可以使用以下几种方法:
- 纯 JavaScript 方法
你可以使用 JavaScript 的 innerText
或 textContent
来提取文本,而忽略 HTML 标签和样式。
javascript
function stripHtml(html) {
var tempDiv = document.createElement("div");
tempDiv.innerHTML = html;
return tempDiv.innerText || tempDiv.textContent || "";
}
var richText = "<div style='color: red;'>Hello <b>World</b>!</div>";
var plainText = stripHtml(richText);
console.log(plainText); // 输出 "Hello World!"
2. 使用正则表达式
可以通过正则表达式去除 HTML 标签。虽然这种方法比较简单,但它可能无法处理一些嵌套标签或特殊的情况,因此需要根据需求进行调整。
javascript
function stripHtmlTags(html) {
return html.replace(/<[^>]*>/g, '');
}
var richText = "<div style='color: red;'>Hello <b>World</b>!</div>";
var plainText = stripHtmlTags(richText);
console.log(plainText); // 输出 "Hello World!"
3. 使用浏览器的 DOM 解析
可以利用浏览器内置的 DOM 解析能力来处理更复杂的 HTML 内容。
javascript
function stripStylesAndHtml(html) {
var tempDiv = document.createElement("div");
tempDiv.innerHTML = html;
// 遍历所有元素,移除内联样式
var elements = tempDiv.getElementsByTagName("*");
for (var i = 0; i < elements.length; i++) {
elements[i].removeAttribute("style");
}
return tempDiv.innerText || tempDiv.textContent || "";
}
var richText = "<div style='color: red;'>Hello <b>World</b>!</div>";
var plainText = stripStylesAndHtml(richText);
console.log(plainText); // 输出 "Hello World!"