質問
PC設定に依存しない曜日判定JSについて
- 投稿日時:2011/03/03 16:20
曜日で画像を変更したいのですが、
パソコンの日付設定に依存しないで作ることはできますか?
たとえば、月曜日なのにパソコンの設定が間違えて
火曜日になっているとその設定で画像が表示されてしまい困っています。
使っているソースは以下です。
どなたかお詳しい方教えてください。
よろしくお願いします。
<!-- 曜日画像 -->
<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>
<!-- 曜日画像 -->
回答 (3件)
- 最新から表示
- 回答順に表示
- ベストアンサーのみ表示
No.3ベストアンサー20pt
- 回答日時:2011/03/03 19:36
#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>
この回答へのお礼
fujillinさん
丁寧なコメントありがとうございました!!!!
fujillinさんのおかげで無事解決することができました。
今後も色々勉強していこうと思います。
No.2
- 回答日時:2011/03/03 17:21
スクリプトの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>
この回答へのお礼
fujillinさん、さっそくのご回答ありがとうございます!!
困っていたのでとても助かりました!
アラートを出さずに、画像を出すことは可能でしょうか?
勉強不足で質問ばかりで申し訳ないです・・・
No.1
- 回答日時:2011/03/03 17:15
こんちくは。
>>パソコンの日付設定に依存しないで作ることはできますか?
んー。でも、持って来る「元」は必要なので、
クライアント依存かサーバ依存かのどっちかになるのは確定だと思いますよ?
サーバ側のシステム時間設定持ってきても、そっちがズレてりゃそれはそれでおしまい。ですからねぇ。
まぁそれは置いといて。。。と。
そもそもサーバ側のスクリプト言語で作るようにするとか
非同期でサーバから持ってくるとか
そんなもんかなぁ。と。
前者については、ASPなり、Perlなり、PHPなり。。。の言語かなと。
そっちの方はサーバ上で動くもんですし、そっちから吐き出すようにしてやれば容易かな。と。
後者については。。。
まぁ、おいらもお勉強不足なので大層なこたいえませんが、
サンプルだけ見つけたのでポイと。
http://oshiete.goo.ne.jp/qa/5991798.html
取得データ加工すれば曜日判断できそうですし使えるな~。と。
思ってもみました。
この回答へのお礼
STICKY2006さん、さっそくのご回答ありがとうございました!
サンプル見てみますね。
できそうだということで、やる気がでてきました。
本当にありがとうございます。
【電話・メール相談特集】
様々なジャンルの専門家に電話やメールで直接相談できるサービスをご紹介。一人で考えるより、あなたの【お悩み解決】や【夢の実現】に、その分野の専門家の力を役立てましょう。
このカテゴリで人気のQ&Aランキング
- 4コマンドプロンプトのERRORLEVELに...
- 5int型からchar型への変換
- 6VBA マクロ実行時エラー 1004
- 7Excel VBA シート名をすべて取得し...
- 8Encode.pmで「髙」(ハシゴ高)が文...
- 9CSSで画像を上下中央に配置する方法...
- 10緯度、経度の 10進法と 60進法の変...
- 11文字列を含まないという正規表現は?
- 12widthやheightの読み方
- 13他言語で言うcontinue文
- 14fatal error LNK1120: 外部参照 1 ...
- 15オープン系、汎用系とは?
- 16interface,extend,implementのちがい
- 17Nullってどういう意味ですか?
- 18ArrayListを使った多次元配列の作成...
- 19LNK2019: 未解決の外部シンボルのエ...
- 20ホームページ作成の相場