如何使用 JavaScript 清除字符串中的标签

Posted

技术标签:

【中文标题】如何使用 JavaScript 清除字符串中的标签【英文标题】:How to clear tags from a string with JavaScript 【发布时间】:2011-06-21 09:18:15 【问题描述】:
<div id="mydiv">
    <p>
        <b><a href="mypage.html">This is an example<a>.</b>
        <br>
        This is another example.
    </p>
</div>

<script type="text/javascript">
    var mystr = document.getElementById('mydiv').innerHTML;
    .....
</script>

我想清除所有标签,并获取盐文本,

mystr = "This is an example this is another example.";

我该怎么做?

【问题讨论】:

【参考方案1】:

使用innerTexttextContent

var element = document.getElementById('mydiv');
var mystr = element.innerText || element.textContent;
所有浏览器都支持innerText,但FF textContent 支持除 IE 以外的所有浏览器

DEMO

我刚刚看到该字符串仍将包含换行符。您可能想使用replace 删除它们:

mystr = mystr.replace(/\n/g, "");

更新:

正如@Šime Vidas 在他的评论中指出的那样,您似乎必须稍微不同地处理空格才能修复 IE 中的字符串:

mystr = mystr.replace(/\s+/g, ' ');

【讨论】:

replace() 只会替换一个换行符 - 请参见此处:jsfiddle.net/yPj3a/4 @Sime: 啊对...我忘记了 JavaScript 的 replace 方法的工作原理...不同;)谢谢并修复。 replace(/\n/g, '') 存在浏览器兼容性问题。这:replace(/\s+/g, ' ') 跨浏览器工作,请参见此处:jsfiddle.net/yPj3a/8 @Sime:谢谢 :)(虽然我没有 IE 可以测试...) 根据我的测试,\s+ 将捕获所有空格,包括换行符,这使其成为最终解决方案。因此不需要\n【参考方案2】:

这是一种不同的方法 - 使用正则表达式替换删除标签:

document.getElementById('mydiv').innerHTML.replace(/\n|<.*?>/g,'')

这是fiddle

【讨论】:

【参考方案3】:

试试:

document.getElementById('mydiv').innerText || document.getElementById('mydiv').textContent;

【讨论】:

【参考方案4】:

您可以遍历所有孩子并从中读取.innerText。然后您可以轻松地连接每个孩子的文本并获得所有没有标签的文本。

【讨论】:

以上是关于如何使用 JavaScript 清除字符串中的标签的主要内容,如果未能解决你的问题,请参考以下文章

HTML/javascript 文本 清除 CSS 样式 代码 等标签 如何编写

如何在 Swift 3 中使用 HTML 标签切换字符串以清除字符串

选择 UITableView 中的行时如何清除文本字段?

如何清除 UITableViewCells 中的 UILabel?

如何手动清除localStorage中的数据

javascript常用函数