時間帯別メッセージを分別に・・・

[新着] Webテンプレートを仮オープンしました



0   名前: ポン太 : 2005/10/28 17:30
時間帯別メッセージを分別メッセージにしたいのですが、
どうしたらよいでしょうか…。
ちなみに自分が思っている分別メッセージとは、
時間帯別メッセージの10:00〜12:59とか、15:00〜16:59とかから
09:25〜09:48とか、15:52〜16:31とかに、したいのです。
お願いします。

1   名前: 元帥 : 2005/10/28 17:30  [URL
var msg... では表示する文字を指定します。サンプルに従って適当に追加削除して下さい。
時間帯は、time1からtime2までの間となっております。順番はそれぞれ対応させて下さい。
var time1... と var time2... に指定します。
但し、時x100+分の値です。(コーディングが楽になるので^^;)

以下、ソース

<script type="text/javascript">
<!--

var msg = new Array('<b>9:25〜9:48</b>','<b>15:52〜16:31</b>','<b>3:05〜3:45</b>');
var time1 = new Array(925,1552,305);
var time2 = new Array(948,1631,345);

var now = new Date;
var clk = now.getHours()*100 + now.getMinutes();

for(var i=0;i<msg.length;i++){
if(clk>=time1[i] && clk<=time2[i]){
document.write(msg[i]);
break;
}
}

-->
</script>

2   名前: ポン太 : 2005/10/28 17:30
ありがとうございました。

ついでといってはなんですが、
分別メッセージに+曜日はできないでしょうか…。
例えば、土曜日の09:25〜09:48とか、
火曜日の15:52〜16:31とか…。
それと、曜日+分別メッセージに、
SmartVisionの、アドバンストの下の所のような、
現在+次というのも+できないでしょうか…。
こんなに注文してしまってすみませんが、
どうか、よろしくお願いします。

3   名前: 元帥 : 2005/10/28 17:30  [URL
冒頭に、
var day = new Array(0,1,2);
を追加して下さい。
日曜は0、月曜は1、……、土曜は6といった感じに指定します。

んで、if文を次のものに置き換え
if(clk>=time1[i] && clk<=time2[i] && clk.getDay()==day[i]){


> それと、曜日+分別メッセージに、
> SmartVisionの、アドバンストの下の所のような、
> 現在+次というのも+できないでしょうか…。

具体的にどういった形になるか、誰が読んでも分かるように説明してほしいですね。


4   名前: ポン太 : 2005/10/28 17:30
>具体的にどういった形になるか、誰が読んでも分かるように説明してほしいですね。
例えば、テレビ番組でいうと、
(時間)日曜日午後6:00〜6:30
(表示)Now On-Airちびまるこちゃん Next On-Airサザエさん
のような感じにしたいのです。
よろしくお願いします。

5   名前: 教えて君 : 2005/10/28 17:30
最初に質問してから30時間以上経過。
誰でも30時間あれば日付を好みの形式で書き出す程度のことは出来るようになる
という事実だけ教えてやるよ。

6   名前: 元帥 : 2005/10/28 17:30  [URL
>>5の助言には後光がさしているようです。

が、まぁ、一応ヒントを与えておきます。
各曜日の表示は配列を用いて、youbi[0]='日曜日'ってな感じで。
午前午後は、getHoursによって求めた値から条件分岐。
今の表示メッセージはiを与えてのものなら、次回はi+1となります。
(配列の末尾の場合の処理は応用で考えて下さい)


7   名前: ポン太 : 2005/10/28 17:30
ありがとうございます。
なんとなくわかってきました。
なんとか一人でがんばってみます。

8   名前: ポン太 : 2005/10/28 17:30
申し訳ありませんが、
http://www.fujitv.co.jp/index.html
↑ の、「ただいま放送中!」の所のようなものを
作れないでしょうか…。

9   名前: 元帥 : 2005/10/28 17:30  [URL
>>1のコードをやや変更すれば構築可能ですが。

JavaScriptを勉強すれば「こうしたい」と思った時に自分で自由に
構築したり改造したり出来るので、後々非常に便利かと思われます。

取り敢えず、簡単な方法:

HTMLは

<a href="" name="4">タイパニック</a>
20:00-23:00
'97年アオデミー賞最多部門受賞のタイパニック
大西洋の底に沈んだ…

みたいな感じで、nameは1から順に振っていきます。
好きなだけ増やして下さい。
また適当にレイアウトして下さい。
JavaScriptは document.write の代わりに
location.href="#"+(i+1);
とします。

これらを記述したファイルを別窓指定サイズで開けば似たようなものが実現できます。

10   名前: ポン太 : 2005/10/28 17:30
>>9
ありがとうございます。
何度もすみません。
JavaScriptをもうすこし勉強してみます。
あと、番組説明ページへのリンクみたいなのは必要ありません。

11   名前: 元帥 : 2005/10/28 17:30  [URL
> あと、番組説明ページへのリンクみたいなのは必要ありません。

との事ですが、>>8 にて
> ↑ の、「ただいま放送中!」の所のようなものを
とあったもので。
そしたら「ただいま放送中!」にはリンクが張ってありました。

12   名前: ポン太 : 2005/10/28 17:30
>>11
すみません...。
確かにリンクが張ってありました。
リンクなしの場合は、
>>9の<a href="" name="4">〜</a>の部分を取ればいいのですか?

13   名前: 元帥 : 2005/10/28 17:30  [URL
どうやら、私は食い違って話を理解しているようなのですが…
ですから下記も要望に副うものかどうか。

> これらを記述したファイルを別窓指定サイズで開けば似たようなものが実現できます。

これだけを行わずに、最初からそのページを開いて下さい。

14   名前: ポン太 : 2005/10/28 17:30
すみません。話が食い違っていたようで…。
自分がよく理解していなかったようです。
元帥さん、ありがとうございました。

15   名前: ポン太 : 2005/10/28 17:30
時間の無いスケジュールの中、ここまで進みました。
やはり>>2の、曜日+分別メッセージにしました。
曜日+時間帯別メッセージまで進み、以下の所まで行きました。
<SCRIPT TYPE="text/javascript">
<!--
var today,hr,n;
today=new Date().getDay();
hr=new Date().getHours();

function ShowMess(){
var s="";
var mess = new Array();
if(today==0){
mess[0]="<b>◎◎◎</b>"
mess[1]="<b>@@@</b>"
(中略)
mess[22]="<b>***</b>"
mess[23]="<b>△△△</b>"

if(today==1){
mess[0]="<b>○○○</b>"
mess[1]="<b>×××</b>"
(中略)
mess[22]="<b>□□□</b>"
mess[23]="<b>※※※</b>"

if(today==2){
mess[0]="<b>▲▲▲</b>"
mess[1]="<b>■■■</b>"
(中略)
mess[22]="<b>+++</b>"
mess[23]="<b>///</b>"

if(today==3){
mess[0]="<b>AAA</b>"
mess[1]="<b>BBB</b>"
(中略)
mess[22]="<b>CCC</b>"
mess[23]="<b>DDD</b>"

if(today==4){
mess[0]="<b>▼▼▼</b>"
mess[1]="<b>▽▽▽</b>"
(中略)
mess[22]="<b>???</b>"
mess[23]="<b>!!!</b>"

if(today==5){
mess[0]="<b>...</b>"
mess[1]="<b>|||</b>"
(中略)
mess[22]="<b>$$$</b>"
mess[23]="<b>%%%</b>"

if(today==6){
mess[0]="<b>###</b>"
mess[1]="<b>===</b>"
(中略)
mess[22]="<b>〜〜〜</b>"
mess[23]="<b>−−−</b>"

}
s+="<CENTER>"+mess[hr]+"<\/center>";
return s;
}

document.write(mess[hr]);

-->
</SCRIPT>

この時点でも全く完成していませんが…、
ここから、曜日+時間帯別→曜日+分別メッセージへは、
どのようにすればよいでしょうか。
お願いいたします。

16   名前: m035 : 2005/10/28 17:30  [URL
document.write(mess[hr]);
では関数を使う意味がないです。
document.write(ShowMess());
にしましょう。
また、配列へ
mess[23]="<b>−−−</b>"
のようにしているようですが、<b>と</b>は関数の最後に付け足せばソースも減り、管理も楽でしょう。
s+="<CENTER>"+mess[hr]+"<\/center>";
return s;
}

s+="<center><b>"+mess[hr]+"</b></center>";
return s;
}
にするだけです。この部分は無駄が多いです。
<\/center>
のように\を使うならなぜ
mess[23]="<b>−−−</b>"
の部分は\がないのです?つまり、必要ありません。
また、
s+="<CENTER>"+mess[hr]+"<\/center>";
return s;
}
の部分は前半は大文字で<CENTER>、後半は小文字で<\/center>となっています。
統一したほうが良いでしょう。
>ここから、曜日+時間帯別→曜日+分別メッセージへは、
>どのようにすればよいでしょうか。
>>1と>>3を参考にすればできます。これだけのソースを作るヤル気があるなら完成はたやすいでしょう。
がんばってください。

17   名前: ポン太 : 2005/10/28 17:30
早速ありがとうございます。
曜日+時間別メッセージはできました。

すみません。
曜日+分別への切り替えがどうしてもわからないのです。
どうすればよいのでしょうか。お願いいたします。

18   名前: m035 : 2005/10/28 17:30  [URL
if(today==数値){

if(today==対象曜日&&対象開始時間<現在時刻&&対象終了時間>現在時刻)
にすればいいんです。
比較する時間は配列にすればいいです。
(元帥氏が>>3で教えてることですよ)


19   名前: ポン太 : 2005/10/28 17:30
すみません。わかりません。
ここまで進んだのにできない自分が情けないですorz
もう、HP開設日が近づいているので、
申し訳ございませんが、答えを教えていただけますか…。

20   名前: zack : 2005/10/28 17:30
if(today==0){
なら
var test = (Date().getHours() * 100) + Date().getMinutes();
if(today==0 && test > 925 && test < 948){
って感じの比較ってことじゃないですか?
答えを書く時間はないので書きません。
頑張ってください。

21   名前: PUREST : 2005/10/28 17:30
とりあえず今速攻で作ったのでいい加減ですが、これでできてますかね?

<script>
var week = ["sun","mon","tue","wed","thu","fri","sat"];
var sun = { t023:"日曜0時23分経過" , t135:"日曜1時35分経過" , t246:"日曜2時46分経過" };
var mon = { t912:"月曜9時12分経過" , t1025:"月曜10時25分経過" , t1138:"月曜11時38分経過" };
var tue = { t1023:"火曜10時23分経過" , t1138:"火曜11時38分経過" , t1245:"火曜12時45分経過" };
var wed = { t622:"水曜6時22分経過" , t735:"水曜7時35分経過" , t819:"水曜8時19分経過" };

var now = new Date()
var now_day = now.getDay();
var now_hour = now.getHours();
var now_minute = now.getMinutes();
var temp_day = eval(week[now_day]);
var now_time = String(now_hour) + String(now_minute);
var temp_prop;
for( i in temp_day ){
if ( now_time >= Number(i.substr(1)) ) temp_prop = i;
}
var message = temp_day[temp_prop];
document.write(message);
</script>

22   名前: ポン太 : 2005/10/28 17:30
zackさん、PURESTさん、ありがとうございます。
PURESTさんの>>21ですが、>>15のように、縦に並べられるものの方を希望していたので、
参考程度といたしました。
とりあえず、お2人のヒントで、以下まで進みました。
<SCRIPT TYPE="text/javascript">
<!--
var today,hr,n;
today=new Date().getDay();
hr=new Date().getHours()*100 + new Date().getMinutes();
;

function ShowMess(){
var s="";
var mess = new Array();
if(today==0){
mess[0051]="◎◎◎"
mess[0113]="@@@"
mess[0329]="***"
(中略)
mess[2350]="///"
if(today==3){
mess[0000]="AAA"
mess[0358]="BBB"
(中略)
mess[2059]="○○○"
mess[2132]="×××"
mess[2210]="□□□"
}

s+="<center><b>"+mess[hr]+"</b></center>";
return s;
}

document.write(ShowMess());

-->
</SCRIPT>
「undefined」と出るのですが、どこが違うのでしょうか。

23   名前: PUREST : 2005/10/28 17:30
undefinedにしないためには1分ごとの配列を定義しないとダメでしょう。
だから、みなさんが比較演算子を使って判定しなさいと言っているわけで。
それは面倒だし、そんなサンプルを作るのは大変なので>>21を書いたのですよ。
縦に並べたいなら改行すればいいだけです。
私が書いたものも最初の時間が到来するまではundefinedになるので、
それぞれのオブジェクトのt0に前の曜日の最後のプロパティを設定しておくのがとりあえず手っ取り早いと思います。
(他の方法は意外に面倒なので…)

<script type="text/javascript">
var week = ["sun","mon","tue","wed","thu","fri","sat"];
var sun = {
t023:"日曜0時23分経過" ,
t135:"日曜1時35分経過" ,
t246:"日曜2時46分経過" };
var mon = { t912:"月曜9時12分経過" , t1025:"月曜10時25分経過" , t1138:"月曜11時38分経過" };
var tue = { t1023:"火曜10時23分経過" , t1138:"火曜11時38分経過" , t1245:"火曜12時45分経過" };
var wed = { t0:tue.t1245 , t622:"水曜6時22分経過" , t735:"水曜7時35分経過" , t819:"水曜8時19分経過" , t1246:"水曜12時46分経過" };
var thu = { t0:wed.t1246 , t623:"木曜6時23分経過" , t826:"木曜8時26分経過" };
var fri = { t0:thu.t826 };
var sat = { };

var now = new Date()
var now_day = now.getDay();
var now_hour = now.getHours();
var now_minute = now.getMinutes();
var temp_day = eval(week[now_day]);
var now_time = Number( String(now_hour) + String(now_minute) );
var temp_prop;
for( i in temp_day ){
if ( now_time >= Number(i.substr(1)) ) temp_prop = i;
}
var message = temp_day[temp_prop];
document.write(message);
</script>

24   名前: zack : 2005/10/28 17:30
こんにちは
<html>
<head>
</head>
<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 >= 800 && hr <= 1000) mess = "日曜の8:00〜10:00ですよ";
break;
case 1: //月
if(hr >= 1100 && hr <= 1130) mess = "月曜の11:00〜11:30ですよ";
break;
case 2: //火
if(hr >= 1300 && hr <= 1440) mess = "火曜の13:00〜14:40ですよ";
break;
case 3: //水
if(hr >= 1500 && hr <= 1545) mess = "水曜の159:00〜15:45ですよ";
break;
case 4: //木
if(hr >= 1600 && hr <= 1640) mess = "木曜の16:00〜16:40ですよ";
break;
case 5: //金
if(hr >= 120 && hr <= 1000) mess = "金曜の1:20〜10:00ですよ";
break;
case 6: //土
if(hr >= 45 && hr <= 55) mess = "土曜の0:45〜0:55ですよ";
break;
}
mess = "<center><b>"+mess+"</b></center>";
return mess;
}
document.write(ShowMess());
-->
</script>
</body>
では頑張ってください

25   名前: zack : 2005/10/28 17:30
PURESTさんへ
now_minuteを二桁にしないと動きがおかしくなりそうですね

>>24の誤記1
hr=new Date().getHours()*100 + new Date().getMinutes();
; ←これは消してください

>>24の誤記2
case 3: //水
if(hr >= 1500 && hr <= 1545) mess = "水曜の159:00〜15:45ですよ";
break;
メッセージは「水曜の15:00〜15:45ですよ」が正しいです。

ではでは

26   名前: ポン太 : 2005/10/28 17:30
ありがとうございます。
全て正常に動作しました。
皆さん、ありがとうございました。
他の事で、分からなくなったときは、
また教えてくださいね。
それでは。

27   名前: PUREST : 2005/10/28 17:30
zackさんへ

お疲れ様です。
ご指摘ありがとうございます。m(__)m
一応直しました。

<script type="text/javascript">
//曜日の配列を定義
var week = ["sun","mon","tue","wed","thu","fri","sat"];
//曜日ごとのオブジェクトを定義。
//時は一桁のまま、分は一桁の場合頭に0をつけて、その頭にtをつけてプロパティにして、値にメッセージの文字列を代入。
var sun = {
t0:"日曜0時経過" ,
t023:"日曜0時23分経過" ,
t135:"日曜1時35分経過" ,
t246:"日曜2時46分経過" ,
t705:"日曜7時5分経過"
};
var mon = {
t0:sun.t705 ,
t912:"月曜9時12分経過" ,
t1025:"月曜10時25分経過" ,
t1138:"月曜11時38分経過"
};
var tue = {
t0:mon.t1138 ,
t1023:"火曜10時23分経過" ,
t1138:"火曜11時38分経過" ,
t1245:"火曜12時45分経過"
};
var wed = {
t0:tue.t1245 ,
t622:"水曜6時22分経過" ,
t735:"水曜7時35分経過" ,
t819:"水曜8時19分経過" , t1246:"水曜12時46分経過" };
var thu = { t0:wed.t1246 , t623:"木曜6時23分経過" , t826:"木曜8時26分経過" };
var fri = { t0:thu.t826 , t625:"金曜日6時25分経過" , t903:"金曜9時3分経過" };
var sat = { t0:fri.t903 , t732:"土曜7時32分経過" , t809:"土曜8時9分経過" };

var now = new Date()
var now_day = now.getDay();
var now_hour = now.getHours();
var now_minute = now.getMinutes();
now_minute = ( now_minute < 10 ) ? ("0" + now_minute) : String(now_minute); //分が一桁の場合文字列"0"を連結
var temp_day = eval(week[now_day]);
var now_time = Number( String(now_hour) + now_minute );
var temp_prop;
for( i in temp_day ){
if ( now_time >= Number(i.substr(1)) ) temp_prop = i;
}
var message = temp_day[temp_prop];
document.write(message);
</script>

一覧へ戻る