根据W3Schools的说法:
classList属性是只读的。
不过,这样做很好:
document.querySelector('body').classList = 'body-class';活生生的例子:
document.querySelector('body').classList = 'body-class';.body-class {
color: blue;
}Testing 1 2 3
这个用法是黑客吗?
发布于 2021-01-28 13:16:40
根据DOM规范,该属性确实是readonly
[SameObject, PutForwards=value] readonly attribute DOMTokenList classList;从规范中:
如果在属性关键字之前使用
readonly关键字,则只读取该属性。实现定义只读属性的接口的对象将不允许分配给该属性。语言绑定是特定的,是语言简单地不允许赋值、忽略还是抛出异常。
但是您也可以在那里看到一个PutForwards=value:
如果PutForwards扩展属性出现在类型为接口类型的只读常规属性声明中,则表示分配给该属性将具有特定行为。也就是说,赋值被“转发”到对象上的属性(由扩展属性参数指定),该对象当前被分配给的属性引用。
.classList的值是DOMTokenList。因此,如果分配给classList,则实际上是分配给.classList.value。
interface DOMTokenList {
...
[CEReactions] stringifier attribute DOMString value;
};有些人说这是一个bug:很可能是因为它是未指定的行为,或者浏览器认为它将是一个有用的特性,尽管官方规范是这么说的。有时,规范会被更新以反映实际情况,而且可能是在某个时候添加了PutForwards=value部件。
https://stackoverflow.com/questions/65937721
复制相似问题