時間帯のあいさつするには?

[上に] [前に] [次に]
とも 1999/05/20(木) 14:18:45
はじめまして。わたしは
時間によって文字が変わるスクリプトとして
次のようなものを考えています。
   <Script language="javascript">
    <!--
    function Msg(){
    var msg1='こんにちは。お元気ですか。ともちゃんは元気です。'
    var msg1='こんばんは。今日はよい1日でしたか。ともちゃんはまぁまぁってとこですね。'
    return eval('msg'+(new Date()).getHours())
    }
    //-->
    </Script>

でもこれだと1時間ごとにメッセージを解釈してしまいます。
午前中と午後のようにおおざっぱに(というと語弊がありますね
0:00-11:00と12:00-23:00の2パターンという感じです)
メッセージを切り替えられるようにするには
どう書き直せばいいんでしょうか?
ご指摘をくださればうれしく思います。それでは失礼します。

無責任官庁 [E-Mail] 1999/05/20(木) 16:13:27
ん〜、普通に時間を判定するif文を入れればいいだけ
だと思うんですけど・・・

例:
msg1 = "おはよう";
msg2 = "こんちわ";
msg3 = "こんばんわ";
hizuke = new Date();
jikan = hizuke.getHours();
if(jikan > 4 && jikan < 11){
ret = msg1;
}else if(jikan > 10 && jikan < 18){
ret = msg2;
}else{
ret = msg3;
}
return ret;


こんな感じ。↑これだと、5時〜10時が”おはよう”、
11時〜17時が”こんちわ”、18時〜4時が”こんばんわ”
と、返ります。
この例は、原形をとどめてないように見えますけど、
>return eval('msg'+(new Date()).getHours())
これを分解して書いたあと、if文を付けただけですので・・・

無責任官庁 [E-Mail] 1999/05/20(木) 16:15:16
あと、これは趣味の問題なんで強制するわけではありませんが、
あなたの書いたプログラムのreturnの後ろ、
いくつかの文が敷き詰められている状態ですよね?
こういう書き方をしてしまうと、今回のように身動きがとれなく
なってしまうので、最初のうちはなるべく私の例のように、
一つ一つ文を記述していった方が良いと思いますよ。

Tsuchiya 1999/05/20(木) 16:23:43
これも、http://www.justnet.ne.jp/javascript/sample/a11/index.htm
ここで、わかると思います。。

匿名希望 1999/05/20(木) 21:17:29
> ここで、わかると思います。。

「何が」わかるのですか?

みんこ 1999/05/21(金) 09:23:48
ジャストネットのサンプルは結果としてはやってることは同じですが
中身は質問者の方と結局同じものです。(1時間事に文字を変える)
質問内容は一時間ごとに文字を変えるるのではなくて適当な時間帯で区切るには?
ってことなのでこれじゃわからんかと。
官庁さんみたいにif文で分けるのが一般的でないでしょうか。

ちなみにホントに一日を2つに分けていいのなら

msg1 = "午前中";
msg2 = "午後";

hizuke = new Date();
jikan = hizuke.getHours();
if(0<= jikan  && jikan <= 11){
ret = msg1;
}else{
ret = msg2;
}
return ret;

こんだけ。

無責任官庁 1999/05/21(金) 17:00:47
あんまし良くない例ですけど、午前・午後だけでいいなら
↓これでもイケます。(^_^;)

function Msg(){
var msg0='午前';
var msg1='午後';
return eval('msg'+Math.floor((new Date()).getHours()/12));
}

[上に] [前に] [次に]