如何使用 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】:使用innerText
和textContent
:
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 标签切换字符串以清除字符串