プロが教えるわが家の防犯対策術!

ホームページ内の一部で、
曜日指定で一定時間だけ表示画像を切替えたいのですが、
日付指定で変わるものばかりしか検索で見つけられずに困っております。


具体的には「毎週火曜日10:00~11:00」までは、自動でA画像を表示し
それ以外はB画像を表示するようにしたいです。


現在は下記(日付指定で画像を変更)をなんとか変更すればできるかと思い
設置して動作させてみました。
ですが、私はJavaScriptに関して初心者なので
曜日指定と、再び元の画像表示に戻すのに
どうしていいのか分かりませんでした。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
window.onload = changeDisplay;
function changeDisplay(){
var objDate = new Date();
var now = objDate.getTime();//現在のタイムスタンプ(ミリ秒)を取得
var changeTime = new Date("Jan 1, 2011 00:00:00");//切り替える日時のタイムスタンプ(ミリ秒)を取得
//切り替え前
if (now < changeTime) {
document.getElementById('hoge').style.display = "block";
document.getElementById('hoge2').style.display = "none";
setTimeout("changeDisplay()", 1000);//1秒ごとに実行(◯秒ごとの場合は、第2引数に 「◯ * 1000」 と記述)
//切り替え後
} else {
document.getElementById('hoge').style.display = "none";
document.getElementById('hoge2').style.display = "block";
}
}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
参考サイト
http://blog.aidream.jp/javascript/javascript-tim …



これを、どう変更すればよいのでしょうか?
またあるいは、別によい記述方法はあるのでしょうか?


下記の過去の質問も拝見してみましたが、
参考サイトのリンク先もなくなっていたりして、分かりませんでした。。。
「曜日と時間を指定して表示画像を切り替える」
http://oshiete.goo.ne.jp/qa/1832822.html



すみませんが、よろしくお願いいたします!

A 回答 (4件)

>ちなみに、時間の指定は中途半端な 


 上記のスクリプトだと
 $min に0~59入ってます。
 秒なら $sec
  ランダムに表示させることもできるし。
    • good
    • 0
この回答へのお礼

色々とありがとうございました!
何とかなりそうです!!(^^)

お礼日時:2014/06/03 16:50

>の部分を書きかえればよいのでしょうか?


 そうです。
>また、こちらはjpgどうし以外の入れ替えもできるものでしょうか?
>例えば、URLを指定して呼び込む等も可能なものでしょうか?
 なんだってできます。
 例えば、<img src="/abc" width="400" height="300" alt="">
 としておいてもよいし。
<img src="/abc?wday=2&startHour=10&endHour=12" width="400" height="300" alt="">
 としてもよいし・・
<img src="/abc/wday=2/startHour=10/endHour/bbb.jpg" width="400" height="300" alt="">
 とPATH_INFOで指定しても良い。もちろんプログラムは多少変わります。

 javascriptだと、
・javascriptが動作していないユーザーではもちろん動かない
・ユーザーの時計が狂っているとまずい
  これは懸賞応募とかの場合まずいですよね。故意に時計をずらされると
 などの問題があって、使うべきではないです。


#!/usr/bin/perl
my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
my $file="/images/test.jpg";
my $newFile = $ENV{'PATH_INFO'};
if($wday == 3 && 10<= $hour || $hour < 12){$file = $newFile;}
print "Content-Type: image/jpeg;\n\n";
open(INDATA,"$file");
while($in = <INDATA>){print $in,"\n";}
__END__;

としておけば
<img src="abc.jpg" width="400" height="300" alt="">
で良いし・・
    • good
    • 0
この回答へのお礼

ご挨拶が遅くなり失礼いたしました!

ご回答ありがとうございました!!
初心者すぎて色々調べながら試してみようと奮闘しております…。

ちなみに、時間の指定は中途半端な 例えば
10:25~11:00といった場合にはどうなるのでしょう?
hourでは設定できないですよね?(><)

度々すみません…。

お礼日時:2014/05/28 20:39

単純にサーバー側に任せれば??


シェルスクリプトなら数行で済むが、Perlが使えれば単純に
[abc.jpg]というファイルを作り
#!/usr/bin/perl
my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
my $file="/images.default.jpg";
if($wday == 3 && 10<= $hour <12){$file ="/images/news.jpg";}
print "Content-Type: image/jpeg;\n\n";
open(INDATA,"$file");
while($in = <INDATA>){print $in,"\n";}


あとは.htaccessで
AddType application/x-httpd-cgi abc.jpg ;

こうしておけば、HTMLから普通に
<img src="abc.jpg" width="400" height="300" alt="">
として置けばよい

ユーザーがjavascriptを使えるか否かも関係ないし、プログラムだけ書き換えれば事足りる。
    • good
    • 0
この回答へのお礼

ありがとうございます!
そんなやり方もあるのですね!

PerlはCGIを探していた時に見かけていたなぁ…
というくらいの知識しかないのですが…

ちなみに、今後曜日や時間設定を変更したい場合は

if($wday == 3 && 10<= $hour <12){$file ="/images/news.jpg";}

の部分を書きかえればよいのでしょうか?


また、こちらはjpgどうし以外の入れ替えもできるものでしょうか?
例えば、URLを指定して呼び込む等も可能なものでしょうか?

よろしくお願いいたします。

お礼日時:2014/05/20 02:03

現在の曜日を確認する


それが火曜日の場合
  現在の時を確認する
  それが10の場合
    画像Aを表示する
  そうでなければ
    画像Bを表示する
そうでなければ
  画像Bを表示する


ってすればいいのよ

参考:http://www.pori2.net/js/date/1.html
    • good
    • 0
この回答へのお礼

ありがとうございます!

参考サイトに書かれていることを
現状のスクリプトに書き加えればよいのでしょうか?

初歩的なことも分からずすみません。。。

お礼日時:2014/05/20 01:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!