首页 > 解决方案 > 从字符串中删除 html 属性?

问题描述

我有一个看起来像这样的 html 字符串:

<div id="demo_..." class="menu">

html 代码以字符串形式提供。现在我想删除所有以 demo_ 开头的 id 属性。结果应该是这样的:

<div class="menu">

我知道它应该与正则表达式一起使用。但我对特殊字符有点挣扎。正则表达式应该是什么样子,以便所有具有这种格式的字符串都可以替换为空字符串?

标签: javascriptcss-selectors

解决方案


您可以使用子字符串属性选择器

[att^=val] 表示具有 att 属性的元素,其值以前缀“val”开头。如果 "val" 是空字符串,则选择器不代表任何内容。

[att$=val] 表示具有 att 属性的元素,其值以后缀“val”结尾。如果 "val" 是空字符串,则选择器不代表任何内容。

[att*=val] 表示具有 att 属性的元素,其值包含至少一个子字符串“val”的实例。如果 "val" 是空字符串,则选择器不代表任何内容。

对于您的情况,您可以使用

document.querySelectorAll('[id^="demo_"]')

或者

document.querySelectorAll('[id*="demo_"]')

结果将是一个带有id属性的 HTMLElement 数组,其值以前缀开头,如果使用而不是demo_包含则包含。从那里您可以使用Method删除每个 HTMLElement att 。从这里阅读更多内容。demo_*^idremoveAttribute()

document.querySelectorAll('[id^="demo_"]')
 .forEach(element => element.removeAttribute('id'));

推荐阅读