プロが教える店舗&オフィスのセキュリティ対策術

曜日で画像を変更したいのですが、
パソコンの日付設定に依存しないで作ることはできますか?

たとえば、月曜日なのにパソコンの設定が間違えて
火曜日になっているとその設定で画像が表示されてしまい困っています。

使っているソースは以下です。
どなたかお詳しい方教えてください。
よろしくお願いします。

<!-- 曜日画像 -->
<center>
<SCRIPT LANGUAGE="JavaScript">
URL="";
GA=new Array(
"img/日曜の画像","img/月曜の画像","img/火曜日の画像","img/水曜日の画像","img/木曜日の画像","img/金曜日の画像","img/土曜日の画像");
day=new Date();
document.write("<img src="+URL+GA[day.getDay()]+">");
</SCRIPT>
</center>
<!-- 曜日画像 -->

A 回答 (3件)

#2です。


曜日の変数の値を入れ代えればいいだけなのですけれど…?


全体がどうなっているのかわかりませんが、document.writeを使うとスクリプトをオフにしているユーザの場合何も表示されないので、デフォルトを表示しておいて後で入替える方がよろしいかと思います。

>パソコンの設定が間違えて火曜日になっていると~
とのことですが、そんな人が何人いるんでしょうかねぇ…
#2の例では時刻から曜日を換算するのに、PCに設定されているタイムゾーンを使っていますので、その設定が違っているとやはり曜日の判断が狂う可能性があります。
それも防止したいのなら、世界標準時でそのまま判断すれば間違いないですが、標準時以外(=日本)でブラウズする人にとっては常に時刻がずれていることになってしまいます。
タイムゾーンを日本に限定して9時間の固定にしてしまえばPCの設定には依存しないようにもできますが、他のタイムゾーンからアクセスした場合には、ローカルの時刻と必ずずれが生じてしまうというジレンマに陥ります。

というわけで、ほぼ正確な時刻を取得はできますが、このあたりが解決できていません。
(「ほぼ正確」=サーバは正確な時刻を返すはずですが、通信に時間がかかるので若干の誤差がでます)

とりあえず、ローカルPCのタイムゾーン設定を利用したままの例


*元のスクリプトにurlという変数を持ちながら利用していないみたいなので利用してください。
*画像の拡張子も(多分)共通だと思いますので、拡張子も共通にしました。
* url(画像のurl)、extention(画像の拡張子)、ga(画像名の配列)などを、設定する必要があります。
*表示対象とする要素は、とりあえず id="target" のimgにしてあります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Script-Type" content="text/javascript">
</head>
<body>

<div>
<img id="target" src="default.jpg" alt="image">
</div>

<script type="text/javascript">
<!--
function jsont(json){
var url = "img/"; //←画像の共通url
var extention = ".jpg"; //←画像の拡張子
var ga = ["sun","mon","tue","wed","thu","fri","sat"]; //←日~土の画像名(拡張子抜き)

var week = new Date(json["st"]*1000).getDay();
document.getElementById("target").src = url + ga[week] + extention;
}
//-->
</script>
<script type="text/javascript" src="http://ntp-a1.nict.go.jp/cgi-bin/jsont"></script>
</body>
</html>
    • good
    • 0
この回答へのお礼

fujillinさん

丁寧なコメントありがとうございました!!!!
fujillinさんのおかげで無事解決することができました。

今後も色々勉強していこうと思います。

お礼日時:2011/03/04 08:51

スクリプトのDate()はローカルPCの時計に依存していますので、外部のサーバから時刻(日付)を取得すれば可能かと。



質問者様の契約サーバからでもよいですし、以下のサイトでも時刻送信のサービスを行なっているようです。
 http://www2.nict.go.jp/w/w114/tsp/JST/JST5.html


後者を利用した例: (変数weekに曜日(0~6)を取得しています)

<script type="text/javascript">
<!--
function jsont(json){
var week = new Date(json["st"]*1000).getDay();

alert("日月火水木金土".split("")[week] + "曜日です");
}
//-->
</script>
<script type="text/javascript" src="http://ntp-a1.nict.go.jp/cgi-bin/jsont"></script>
    • good
    • 0
この回答へのお礼

fujillinさん、さっそくのご回答ありがとうございます!!
困っていたのでとても助かりました!

アラートを出さずに、画像を出すことは可能でしょうか?

勉強不足で質問ばかりで申し訳ないです・・・

お礼日時:2011/03/03 17:56

こんちくは。



>>パソコンの日付設定に依存しないで作ることはできますか?

んー。でも、持って来る「元」は必要なので、
クライアント依存かサーバ依存かのどっちかになるのは確定だと思いますよ?


サーバ側のシステム時間設定持ってきても、そっちがズレてりゃそれはそれでおしまい。ですからねぇ。

まぁそれは置いといて。。。と。


そもそもサーバ側のスクリプト言語で作るようにするとか
非同期でサーバから持ってくるとか
そんなもんかなぁ。と。

前者については、ASPなり、Perlなり、PHPなり。。。の言語かなと。
そっちの方はサーバ上で動くもんですし、そっちから吐き出すようにしてやれば容易かな。と。

後者については。。。
まぁ、おいらもお勉強不足なので大層なこたいえませんが、
サンプルだけ見つけたのでポイと。
http://oshiete.goo.ne.jp/qa/5991798.html

取得データ加工すれば曜日判断できそうですし使えるな~。と。
思ってもみました。
    • good
    • 0
この回答へのお礼

STICKY2006さん、さっそくのご回答ありがとうございました!

サンプル見てみますね。
できそうだということで、やる気がでてきました。
本当にありがとうございます。

お礼日時:2011/03/03 17:59

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