【问题标题】:How to clear tags from a string with JavaScript如何使用 JavaScript 清除字符串中的标签
【发布时间】:2025-12-29 01:50:12
【问题描述】:
<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.";

我该怎么做?

【问题讨论】:

    标签: javascript innerhtml


    【解决方案1】:

    使用innerTexttextContent

    var element = document.getElementById('mydiv');
    var mystr = element.innerText || element.textContent;
    

    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。然后您可以轻松地连接每个孩子的文本并获得所有没有标签的文本。

        【讨论】: