提问人:Enlico 提问时间:10/21/2023 更新时间:10/21/2023 访问量:49
是否有任何原因导致“class”属性即使在通过classList.remove删除最后一个类后仍保留在HTML标记中?
Is there any reason why the "class" attribute stays in an HTML tag even after removing last class via classList.remove?
问:
如果我执行以下代码片段,
s = document.createElement('span');
console.log(s)
s.classList.add('foo');
console.log(s)
s.classList.remove('foo');
console.log(s)
我得到这个输出:
<span></span>
<span class="foo"></span>
<span class></span>
为什么还在第三行?它有什么用吗?或者我可以认为它不存在吗?class
答:
1赞
Afzal K.
10/21/2023
#1
classList
属性用于操作属性中的类名,但属性本身仍将存在。要删除属性本身,您可以使用class
class
removeAttribute()
s = document.createElement('span');
console.log(s)
s.classList.add('foo');
console.log(s)
s.removeAttribute('class');
console.log(s)
1赞
VLAZ
10/21/2023
#2
它有什么用吗?
它是一个没有值的属性。不多也不少。这并不是真正的“特别”。它遵循正常规则,例如可以通过属性选择器进行匹配
[class] {
font-size: 2em;
}
[class="foo"] {
text-decoration: underline;
}
.foo {
color: red;
}
<span>
A
</span>
<span class>
B
</span>
<span class="foo">
C
</span>
或者我可以认为它不存在吗?
无价值属性的存在本身不会执行任何操作。虽然有人可能编写了一个仅使用其存在的选择器:class
- 这取决于特定的 HTML + CSS/JavaScript 应用程序。为“任何带有”的东西“设置属性选择器并不是一件普遍的事情。
class
- 即使存在,也很少见。在绝大多数情况下,人们会希望使用特定的类值。通常不值得关注属性的存在与否。
因此,总的来说,理论上可能会有不同的行为。但是,他们不太可能这样做。根据代码试图对这些内容执行的操作,将它们视为等效可能是安全的。<span>
<span class>
评论