例如,我们有一个HTML标记:
<div class="box">This is a box</div>
我们使用div标签类名 box
并在同一 div
标签中添加 id="box"
. 输出是:
<div id="box" class="box">This is a box</div>
我们可以使用以下代码为单个标记实现更改:
document.getElementsByTagName("div")["class", "box"].setAttribute("id", "box")
但是如果我们不知道或者我们在HTML元素中有多个类,那么如何将 id
添加到所有标签中?
例:
<div class="box">Hello World</div>
<div class="box--red">Hello World</div>
<div class="box--blue">Hello World</div>
<div class="box--green">Hello World</div>
输出应如下所示:
<div id="box">Hello World</div>
<div id="box--red">Hello World</div>
<div id="box--blue">Hello World</div>
<div id="box--green">Hello World</div>
7 回答
此代码很简单,适用于上述要求 .
这段代码对你有用
您可以在类名上使用通配符
*
,如下所示 .如果您愿意使用jQuery,我认为以下可以做到这一点:
我添加了一些配色方案,以便更容易理解过渡 .
您可以使用
querySelectorAll()
方法在JavaScript中轻松完成并循环结果:注意:虽然这适用于多类标记,但空格在
id
中无效 . 浏览器将允许id
中的空格,但使用它们将更难 . 在为id
指定空格之前,可以用下划线替换空格 .您可以使用jQuery的Attribute Starts With Selector循环遍历所有元素,以便您可以使用当前元素的类设置属性id with attr . 然后使用removeClass()删除该类 .
Vanilla JavaScript: 使用
querySelectorAll()
和forEach()
我不确定为什么你会这样做是一个真实的场景,但它可以通过循环所有
div
元素,将id设置为类名,然后删除class属性来实现 . 我在下面创建了一个vanilla Javascript示例 .注意:
id
在DOM中必须是唯一的,否则可能会导致多个问题 .如果您需要将具有"box"作为class属性的第一部分的不同元素作为目标,则可以使用
querySelectorAll
中的选择器[class^="box"]
,如下所示: