2016-05-18 11 views
0

次のjavascriptを使用して、訪問した日の時刻に基づいて自分のWebサイト訪問者にメッセージを動的に表示します。Javascript .getHours()が正しく動作しない

var myDate = new Date(); 

/* hour is before noon */ 
if (myDate.getHours() < 12) 
{ 
    document.write("Good morning"); 
} 
else /* Hour is from noon to 5pm (actually to 5:59 pm) */ 
if (myDate.getHours() >= 12 && myDate.getHours() <= 17) 
{ 
    document.write("Good afternoon"); 
} 
else /* the hour is after 5pm, so it is between 6pm and 2am */ 
if (myDate.getHours() > 17 && myDate.getHours() <= 2) 
{ 
    document.write("Good evening"); 
} 
else /* the hour is not between 0 and 24, so something is wrong */ 
{ 
    document.write("Hello"); 
} 

これは、私がこのサイトの他の人の質問に対する回答で見つけたスクリプトです。それはすごくうまくいっていましたが、数週間後、もう「おはようございます」というメッセージは表示されません。だから、「おはよう」と「午後」はうまく動いていますが、「おはよう」というメッセージが表示される瞬間、スクリプトに何か問題があることを示す「こんにちは」が表示されます。私はそれを書き換えて時代を変えようとしましたが、私はいつも同じエラーを受けます。

誰にもこの問題の原因が分かりますか?ありがとう!

+1

あなたは答えとして、私は – floribon

+0

が代わりに 'スイッチ... case'を使用して考えられて与えた地雷をキャンセルしたことを投稿する必要があります@MattWay?もし私があなたにお手伝いできるように私に知らせてください。 –

答えて

1

あなたの問題は、getHours()の結果があなたのif条件を満たすものではないということです。換言すれば、getHours()の値は> 17<= 2となることはできません。

コメントの要件を満たすために(||)を使用して、またはその代わりに試してみてください:

if (myDate.getHours() > 17 || myDate.getHours() <= 2) 
+0

これはおそらくトリックです!それは非常に明白なので私はこれを見ている必要があります。ご協力いただきありがとうございます! –

0

かいつまんで、誰かがあなたのコードで23を削除しました。 gitblame ./filenameを確認してください。実際のコードは次のようになります。

myDate.getHours() > 17 && myDate.getHours() <= 23 
0
var myDate = new Date(); 

/* hour is before noon */ 

console.log(myDate.getHours()); 
if (myDate.getHours() >= 2 && myDate.getHours() < 12) 
{ 
    console.log("Good morning"); 
} 
else /* Hour is from noon to 5pm (actually to 5:59 pm) */ 
if (myDate.getHours() >= 12 && myDate.getHours() <= 17) 
{ 
    console.log("Good afternoon"); 
} 
else if (myDate.getHours() > 17 || myDate.getHours() <= 2 && myDate.getHours() >=0) 
{ 
    console.log("Good evening"); 
} 
else /* the hour is not between 0 and 24, so something is wrong */ 
{ 
    console.log("Hello"); 
} 
関連する問題