• ベストアンサー

指定した「曜日」の「時刻」に違うHTMLを表示させるプログラム

いつもお世話になっております。 指定した「時刻」または「曜日」または「日付」に 違うHTMLを表示させるプログラムならば ↓のサンプルプログラム「時計」の5.で出来るのですが http://www2s.biglobe.ne.jp/~club_tom/java-kouza/ja-index.htm これを欲張って 指定した「曜日のさらに違う時刻」に 表示させるプログラムは無いでしょうか。 じっくり勉強する時間はないので フリーのサンプルプログラムや 上記の改造方法を教えていただければ 本当に助かります・・・ よろしくお願いします m(_)m

質問者が選んだベストアンサー

  • ベストアンサー
  • m035
  • ベストアンサー率44% (38/86)
回答No.1

http://www.tagindex.com/cgi-lib/q4bbs/patio.cgi?mode=view&no=105 で似たような質問があります。 役立つと思いますので一読してみてください。

chiroru2004
質問者

お礼

早速ありがとうございます。 教えていただいた掲示板のNO24のスクリプトが 一番簡単そうなので設置してみたのですが・・・↓ <BODY> <script type="text/javascript"> <!-- var today,hr,n; today=new Date().getDay(); hr=new Date().getHours()*100 + new Date().getMinutes(); function ShowMess(){ var mess = ""; switch(today){ case 0: //日 if(hr >= 501 && hr <= 1000) mess = "日曜の5:01~10:00ですよ"; break; case 0: //日 if(hr >= 1001 && hr <= 1800) mess = "日曜の10:01~18:00ですよ"; break; case 0: //日 if(hr >= 1801 && hr <= 0) mess = "日曜の18:01~0:00ですよ"; break; case 0: //日 if(hr >= 01 && hr <= 500) mess = "日曜の0:01~5:00ですよ"; break; case 1: //月 if(hr >= 501 && hr <= 1000) mess = "月曜の5:01~10:00ですよ"; ・ ・ ・ (省略) ・ ・ ・ case 6: //土 if(hr >= 01 && hr <= 500) mess = "土曜の0:01~5:00ですよ"; break; } mess = "<center><b>"+mess+"</b></center>"; return mess; } document.write(ShowMess()); --> </script> </BODY> と、書きかえてブラウザで開いても全く何も表示されません。 スクリプトエラーにすらなりません・・・ どこか記述が間違っているのでしょうか? サンプルをそのまま貼り付けると表示されるのですが。

その他の回答 (3)

  • meke2
  • ベストアンサー率41% (16/39)
回答No.4

#2のものです。早速間違えてました。。 「0:00」になると次の曜日になってしまうので「18:01~0:00」で作ろうとすると以下のようになりますね。 ------------------------------------------------ case 0: //日 if(hr == 0) mess = "土曜の18:01~0:00ですよ"; if(hr >= 501 && hr <= 1000) mess = "日曜の5:01~10:00ですよ"; if(hr >= 1001 && hr <= 1800) mess = "日曜の10:01~18:00ですよ"; if(hr >= 1801) mess = "日曜の18:01~0:00ですよ"; if(hr >= 1 && hr <= 500) mess = "日曜の0:01~5:00ですよ"; break; case 1: //月 if(hr == 0) mess = "日曜の18:01~0:00ですよ"; if(hr >= 501 && hr <= 1000) mess = "月曜の5:01~10:00ですよ"; if(hr >= 1001 && hr <= 1800) mess = "月曜の10:01~18:00ですよ"; if(hr >= 1801) mess = "月曜の18:01~0:00ですよ"; if(hr >= 1 && hr <= 500) mess = "月曜の0:01~5:00ですよ"; break; ---------------------------------------------- さらに書き方に誤りがあったので‥‥ >矛盾(hrは0以上の数字しかない) これは「hrは 0~2359 の値の「どれか1つ」しかない」ということで。。 0(以下)であり1801以上の「値」なんておそらく存在しないため条件としては矛盾してます。ということでした。

chiroru2004
質問者

お礼

まとめてお礼を。 実は最初に教えていただいた掲示板の中にあった 別の方が書かれたスクリプトで試してみると 希望どおりに動作しました。 ので、そちらを使うことにしました。 アドバイスたいへん役立ちました。 ありがとうございました。

  • m035
  • ベストアンサー率44% (38/86)
回答No.3

case 0: //日 if(hr >= 501 && hr <= 1000) mess = "日曜の5:01~10:00ですよ"; break; case 0: //日 if(hr >= 1001 && hr <= 1800) mess = "日曜の10:01~18:00ですよ"; break; case 0: //日 if(hr >= 1801 && hr <= 0) mess = "日曜の18:01~0:00ですよ"; break; case 0: //日 if(hr >= 01 && hr <= 500) mess = "日曜の0:01~5:00ですよ"; break; ↑caseとbreakの使い方がおかしいと思われます。 たとえば日曜日だと 最初の部分でcase 0の日曜に当てはまりますが、ifの条件に合わない場合、 breakによってswitchのループから抜け出してしまいます。 このため、もし、仮に表示されたとしても、各曜日のcaseの最初のifしか判定されません。 この場合は case 0://日曜 if(hr >= 501 && hr <= 1000) mess = "日曜の5:01~10:00ですよ"; if(hr >= 1001 && hr <= 1800) mess = "日曜の10:01~18:00ですよ"; if(hr >= 1801 && hr <= 0) mess = "日曜の18:01~0:00ですよ"; if(hr >= 01 && hr <= 500) mess = "日曜の0:01~5:00ですよ"; break; case 1: //月 if(hr >= 501 && hr <= 1000) mess = "月曜の5:01~10:00ですよ"; if(hr >= 1001 && hr <= 1800) mess = "月曜の10:01~18:00ですよ"; if(hr >= 1801 && hr <= 0) mess = "月曜の18:01~0:00ですよ"; if(hr >= 01 && hr <= 500) mess = "月曜の0:01~5:00ですよ"; break; (以下略) のように各曜日ごとのcaseとbreakは一つずつで十分です。 コレでもだめなら再度報告してください。

  • meke2
  • ベストアンサー率41% (16/39)
回答No.2

まずは、おそらくこれで動くはずのスクリプトを。。 ------------------------------------------------- <BODY> <script type="text/javascript"> <!-- var today,hr,n; today=new Date().getDay(); hr=new Date().getHours()*100 + new Date().getMinutes(); function ShowMess(){ var mess = ""; switch(today) { case 0: //日 if(hr >= 501 && hr <= 1000) mess = "日曜の5:01~10:00ですよ"; if(hr >= 1001 && hr <= 1800) mess = "日曜の10:01~18:00ですよ"; if((hr >= 1801 && hr <= 2359) || hr == 0) mess = "日曜の18:01~0:00ですよ"; if(hr >= 1 && hr <= 500) mess = "日曜の0:01~5:00ですよ"; break; case 1: //月 if(hr >= 501 && hr <= 1000) mess = "月曜の5:01~10:00ですよ"; if(hr >= 1001 && hr <= 1800) mess = "月曜の10:01~18:00ですよ"; if((hr >= 1801 && hr <= 2359) || hr == 0) mess = "月曜の18:01~0:00ですよ"; if(hr >= 1 && hr <= 500) mess = "月曜の0:01~5:00ですよ"; break; case 2://火 ・ 省略 ・ case 6: //土 if(hr >= 01 && hr <= 500) mess = "土曜の0:01~5:00ですよ"; break; default: // 上記で当てはまらない場合。。 break; } mess = "<center><b>"+mess+"</b></center>"; return mess; } document.write(ShowMess()); --> </script> </BODY> ------------------------------------------------- #1の回答に対するお礼のスクリプトの場合だと‥‥ 「それぞれの曜日で5:01~10:00」の場合は表示されると思われますが、それ以外はbreak;によって以降の同じ曜日での判定はスキップされちゃいます。 >if(hr >= 1801 && hr <= 0) mess = "日曜の18:01~0:00ですよ"; こちらも判定としては「hrは1801以上かつ0以下」と矛盾(hrは0以上の数字しかない)してるのでこのサンプルでは上のような感じで判断すればいいかと。。

関連するQ&A

専門家に質問してみよう