首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >classList是以什么方式只读的?

classList是以什么方式只读的?
EN

Stack Overflow用户
提问于 2021-01-28 13:07:44
回答 1查看 111关注 0票数 3

根据W3Schools的说法:

classList属性是只读的。

classlist.asp

不过,这样做很好:

代码语言:javascript
复制
document.querySelector('body').classList = 'body-class';

活生生的例子:

代码语言:javascript
复制
document.querySelector('body').classList = 'body-class';
代码语言:javascript
复制
.body-class {
    color: blue;
}
代码语言:javascript
复制
Testing 1 2 3

这个用法是黑客吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-28 13:16:40

根据DOM规范,该属性确实是readonly

代码语言:javascript
复制
 [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;

从规范中:

如果在属性关键字之前使用readonly关键字,则只读取该属性。实现定义只读属性的接口的对象将不允许分配给该属性。语言绑定是特定的,是语言简单地不允许赋值、忽略还是抛出异常。

但是您也可以在那里看到一个PutForwards=value

如果PutForwards扩展属性出现在类型为接口类型的只读常规属性声明中,则表示分配给该属性将具有特定行为。也就是说,赋值被“转发”到对象上的属性(由扩展属性参数指定),该对象当前被分配给的属性引用。

.classList的值是DOMTokenList。因此,如果分配给classList,则实际上是分配给.classList.value

代码语言:javascript
复制
interface DOMTokenList {
  ...
  [CEReactions] stringifier attribute DOMString value;
};

有些人说这是一个bug:很可能是因为它是未指定的行为,或者浏览器认为它将是一个有用的特性,尽管官方规范是这么说的。有时,规范会被更新以反映实际情况,而且可能是在某个时候添加了PutForwards=value部件。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65937721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档