2016-07-07 22 views
0

現在の時刻を使用して変更CSSを追加します。 これはIlustrationのコードです。ユーザ現在時刻でCSSを変更するJavaScript

var today = new Date(); 
var hourNow = today.getHours(); 
var style; //add css// 

    if (hourNow > 0) { //hour 00:00 - 12:00 the css// 
     document.getElementsByTagName('BODY')[0].style.backgroundColor = "#fff"; 
     document.getElementsByTagName('BODY')[0].style.color= "#505050"; } 

    else if (hourNow > 12) { //hour 120:00 - 18:00 the css// 
     document.getElementsByTagName('BODY')[0].style.backgroundColor = "gainsboro"; 
     document.getElementsByTagName('BODY')[0].style.color= "black"; } 

    else if (hourNow > 18) { //hour 18:00 - 00:00 the css// 
     document.getElementsByTagName('BODY')[0].style.backgroundColor = "#1b1b1b"; 
     document.getElementsByTagName('BODY')[0].style.color= "#fff"; } 

    else { 
     document.getElementsByTagName('BODY')[0].style.backgroundColor = "white"; 
     document.getElementsByTagName('BODY')[0].style.color= "black";} 

は可能ですか?私はJavaScriptで新しいです。

+0

これをテストします。 –

+1

試しましたか?私には妥当だと思われる。私の上のコメントもエコーしてください。 –

+0

自分のコードで必要なブレーススタイルを明示的に使用することはできますが、他の人が読むコードを投稿するときは、*漠然と標準的で読みやすいものを使用してください。ブロックの最後の行の最後に '}'を隠すことは、漠然と標準的ではなく、読み込み可能(または保守可能)でもありません。 –

答えて

0

それが正確に0でない限り、あなたのコードは常に、最初の条件が成功すると、その場合にはそれが「デフォルト」をかかります。この場合

var today = new Date(); 
var hourNow = today.getHours(); 
var style; //add css// 

if (hourNow >= 18) { //hour 18:00 - 00:00 the css// 
    document.getElementsByTagName('BODY')[0].style.backgroundColor = "#1b1b1b"; 
    document.getElementsByTagName('BODY')[0].style.color= "#fff"; } 

else if (hourNow >= 12) { //hour 120:00 - 18:00 the css// 
    document.getElementsByTagName('BODY')[0].style.backgroundColor = "gainsboro"; 
    document.getElementsByTagName('BODY')[0].style.color= "black"; } 

else if (hourNow >= 0) { //hour 00:00 - 12:00 the css// 
    document.getElementsByTagName('BODY')[0].style.backgroundColor = "#fff"; 
    document.getElementsByTagName('BODY')[0].style.color= "#505050"; } 

else { 
    document.getElementsByTagName('BODY')[0].style.backgroundColor = "white"; 
    document.getElementsByTagName('BODY')[0].style.color= "black";} 
+0

を得なければなりません:) –

2

私は自分自身を繰り返すことは少なく、else(逆のものをリストする)を使用しますが、根本的には大丈夫だったはずです。 、

var today = new Date(); 
 
var hourNow = today.getHours(); 
 
var style; 
 

 
if (hourNow > 18) { 
 
    background = "#1b1b1b"; 
 
    color = "#fff"; 
 
} else if (hourNow > 12) { 
 
    background = "gainsboro"; 
 
    color = "black"; 
 
} else if (hourNow > 0) { 
 
    background = "#fff"; 
 
    color = "#505050"; 
 
} 
 
document.body.style.backgroundColor = background; 
 
document.body.style.color = color;
This is the document body.
...またはより良い使用をCSSでスタイル情報を入れて、追加/クラスを削除します。私は、直接風の操作をしなければならなかった場合、私はこのような何かをしたいです。

var today = new Date(); 
 
var hourNow = today.getHours(); 
 
var style; 
 
var cls; 
 

 
if (hourNow > 18) { 
 
    cls = "evening"; 
 
} else if (hourNow > 12) { 
 
    cls = "afternoon"; 
 
} else if (hourNow > 0) { 
 
    cls = "morning"; 
 
} 
 
document.body.classList.remove("morning", "afternoon", "evening"); 
 
document.body.classList.add(cls);
.morning { 
 
    background-color: #fff; 
 
    color: #505050; 
 
} 
 
.afternoon { 
 
    background-color: gainsboro; 
 
    color: black; 
 
} 
 
.evening { 
 
    background-color: #1b1b1b; 
 
    color: #fff; 
 
}
This is the document body.

+0

通常、if else文であまりに多くの条件を使いたくないのです。だから私はswitch文を提案したのです –

+2

@RichardHamilton:上記はif文で多すぎる条件ではありません。 'switch 'は本当に値の範囲に対して良い選択肢ではありません。 –

+0

...そして、実際には、 'switch'を使用すると' if/else'だけで他の名前とあまり知られていない構文になります。 –

0

を、私はswitchステートメントを使用します。 は、私はそれを使用して、それを修正しました。また、スタイルを設定する代わりに、クラス名を変更する方が効率的かもしれません。ただ、FYI、 `document.getElementsByTagName( 'BODY')は[0]`はるかに簡単にdocument.body` `のように書くことができ

var today = new Date(); 
 
var hourNow = today.getHours(); 
 

 
switch(true) { 
 
    case (hourNow > 0 && hourNow <= 12): 
 
     document.body.className = "morning"; 
 
     break; 
 
    case (hourNow > 12 && hourNow <= 18): 
 
     document.body.className = "afternoon"; 
 
     break; 
 
    default: 
 
     document.body.className = "evening"; 
 
     break; 
 
} 
 
.morning { 
 
    background-color: #fff; 
 
    color: #505050; 
 
} 
 

 
.afternoon { 
 
    background-color: gainsboro; 
 
    color: black; 
 
} 
 

 
.evening { 
 
    background-color: #1b1b1b; 
 
    color: #fff; 
 
}

+0

誰もがリチャードに苦労する前に:はい、JavaScriptの 'switch'は本当にあなたにこれをさせています。本当に。 :-) –

関連する問題