首页 > 解决方案 > Javascript - 从“.innerHTML”结果中去除某些字符串

问题描述

我有一个在单击按钮时运行的功能。此函数将获取某个元素内的所有 HTML。这很好用。但是,我想在我的函数中进一步使用它之前清理返回的字符串(HTML):

exportHTML(){
  const element = document.getElementById('content');
  const innerHTML = element.innerHTML;
}

这行得通。但是由于使用 Angular,Angular 语法会根据源代码中的条件包含在 HTML 中。例如:

<div _ngcontent-c1=""></div>

或者

<div ng-reflect-klass="panel album"></div>
<div ng-reflect-ng-class="blue"></div>

是否有可能过滤掉这些类型的值?关于上面的第二个和第三个示例,其中的类会经常更改:

  1. 是否可以过滤并删除所有_ngcontent-c1=""文本
  2. 是否可以过滤并删除所有ng-reflect-klassng-reflect-ng-class包括以下打开和关闭引号(以删除里面的内容)

标签: javascriptinnerhtml

解决方案


You could do it with RegExp

const innerHTML = element.innerHTML.replace(/ (_ngcon|ng-).*?".*?"/g, '');
  1. (_ngcon|ng-) find _ngcon or ng- including space as first character
  2. .*?" match everything until first "
  3. .*?" and match everything again for the closing "

推荐阅读