2016-11-05 2 views
4

私はJavaScriptを使用してbodyのbcakgroundを変更しようと、次は動作しないことが観察された:セミコロンをスタイル属性のJavaScriptで挿入できないのはなぜですか?

document.body.style.background = "#000;" 

しかし、私はセミコロンをOMMITならば、それは動作します:

document.body.style.background = "#000" 

それはなぜそう? #000;はまだ文字列ではありませんか?

+0

これはまだ文字列ですが無効です。 – vlaz

+0

は '#000;' background'の有効な値ですか? 'background-color:#000 ;; ' –

+0

JavaScriptは' background:#000'の後に ';'を自動的に挿入しますか? – user31782

答えて

-1

バックグラウンドスタイルを#000に設定すると、それは背景を出力します:#000 ;;これは適切なCSS規則ではありません

6

;は値の一部ではありません。スタイルセパレータです。

selector { 
    styleName: styleValue; 
    /* Separator --------^----- */ 
} 

the specから:

(また、 "ルール" と呼ばれる)ルールセットは、宣言ブロックが続くセレクタから成ります。

宣言ブロックは、左中括弧({)で始まり、右中括弧(})で終わります。その間に0以上のリストがなければなりませんセミコロンで区切られた;)の宣言がなければなりません。

2番目の例(;なし)は正しいです。あなたの最初の例では、値#000;が無効であるためスタイルを設定できないので、ブラウザはそれを無視します。

+0

私は複数のスタイルを追加しなければならないと思ったので、手動で ';'を挿入する必要がありました。例えば。 document.body.style.background = "#000" 'の後に' document.body.style.width = "100px" 'とすると、出力は' ''#000'の後にセミコロンはありません。しかし、javascriptは、複数のスタイルが追加されたときに自動的にセミコロンを挿入するようです。 – user31782

+2

@ user31782:あなたはCSSブロックをスタイル値と混同しています。要素の 'style'プロパティは、個々の値のプロパティを持つオブジェクトです。セパレータは必要ありません。個別のプロパティです。 "JavaScript"はセミコロンを挿入しません。それはプロパティを設定しています。 yesという要素から 'style' *属性*を取得すると、ブラウザはシリアル化された結果を埋め込みセミコロンで正しくレンダリングします。 –

関連する問題