为什么不能在样式属性中通过javascript插入分号?

use*_*782 4 html javascript

我试图body用javascript 更改bcakground 并观察到以下不起作用:

document.body.style.background = "#000;"  
Run Code Online (Sandbox Code Playgroud)

但是,如果我省略分号,那么它可以工作:

document.body.style.background = "#000"  
Run Code Online (Sandbox Code Playgroud)

为什么会这样?还不#000;是一个字符串?

T.J*_*der 6

;不是价值的一部分.这是一个样式分隔符.

selector {
    styleName: styleValue;
    /* Separator --------^----- */
}
Run Code Online (Sandbox Code Playgroud)

规格:

规则集(也称为"规则")由选择器后跟声明块组成.

声明块以左大括号({)开头,以匹配的右大括号(})结束.在它们之间必须有一个零或多个分号分隔(;)声明的列表.

你的第二个例子(没有;)是正确的.您的第一个示例无法设置样式,因为该值#000;无效,因此浏览器会忽略它.

  • @ user31782:您将CSS块与样式值混淆.元素上的`style`属性是一个对象,具有各个值的属性.不需要分隔符,它们是离散的属性."JavaScript"不插入分号.这是设置属性.如果从元素中获得`style`*属性*,浏览器将使用嵌入的分号正确呈现序列化结果,是的. (2认同)