• ベストアンサー

毎日午前0時にhtmlを切り替えたいです

a.htmlとb.htmlを作成しておき、 毎日午前0時になったら自動で切り替えるようにしたいです。 どなたか教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.7

遅くなった。 ところで、あなたのやりたいことが、できたでしょうか? あまり説明などするタイプの人ではないので、これ以上はご勘弁。 さて、1日おきでページを切り替える場合何を基準にするかです。 暦の奇数日と偶数日で切り替えようとすると、31日と翌月の1日では、連続で奇数日が表示されますね。 そこでここでは、Date オブジェクトを使いました。 JavaScript の Date オブジェクトは、標準時の1970年1月1日0時0分0秒から経過時間をmsで記憶しています。 なので、その値を1日の長さ(86400000ミリ秒)で割ると、1970年から何日経過しているかわかります。 さらにそれを2で割って余りを求めます。その結果が1ならば、経過日数が奇数で、0ならば偶数日経過していることになります。 if 文に使われた比較式は、奇数日か偶数日なのかしか判断しません。 そして、またもやらかした! if (((t+34200000||0)/86400000|0)%2) location.href = 'b.html'; +と-を間違えた!申し訳ない。ごめんなさい

ichigo-tounyu
質問者

お礼

長々とお付き合いくださって本当にありがとうございました!!! 回答も丁寧に説明してくださってとても感謝しております。 ほんとうにありがとうございました。 今後もいろいろと勉強していきたいとおもいます。 今回はお世話になりました。 ありがとうござました!

その他の回答 (6)

回答No.6

> 本来はどういった手法でやるものなのでしょうか? サーバー側で処理すべきです。 JavaScriptは、サーバーではなくパソコン側で実行されます。 現状 1. パソコン側が、a.html をサーバー側に要求します。 2. サーバ側が、a.html を送信します。 3. スクリプトが日付を判断して、b.htmlを要求します。 4. サーバ側が、b.html を送信します。 結果 a.html の送受信が無駄になります。 解決策 a.html の要求があったとき、サーバー側で、日付を判断して適当なファイルを送信する 具体策 1. 日付が変わるとき、サーバー側のプログラムで、a.html と b.html の中身を交換する   cron を参照 2. a.htmlの要求があったとき、日付を判断して適当なファイルを送信する   サーバー側で動くperl or php 言語などを参照

ichigo-tounyu
質問者

お礼

なるほど・・・ プログラムのわからないわたしにも分かりやすいご回答ありがとうございます!!! 今回のサーバはECサイトでPHPが使えなかったので 教えていただいたやり方でやろうと思っています。 1点確認させていただけますでしょうか。 毎日0時にa.htmlからb.htmlに切り替える際に、 何時までa.htmlにアクセスするとb.htmlに飛ばされますでしょうか。 昨日の夕方に設定をして、今朝確認をしてみたらa.htmlの表示のままになってしまったので もしかして終了時間があるのかと思い、最後のご質問をさせていただきました。

回答No.5

けんしょうするために1にちもまつの? 86400000 = 24(じかん)×60(ふん)×60(びょう)×1000() なので、1じかんおきなら 3600000 でわると、1じかんおきになるよ 1じかんもまてないなら、60000 でどう?1ふんおき。 でもこういうものは、すくりぷとでやるものじゃないよ。

ichigo-tounyu
質問者

お礼

60000で検証してみます!ありがとうございます!! 何も分からなくてすみません。。 そうなんですね! 本来はどういった手法でやるものなのでしょうか? プログラムに弱くてすぐにjavascriptかなと思ってしまったのですがっ・・・ お時間のあるときでよいので教えてくださいませんでしょうか。

回答No.4

あ~ごめん、きたいしているのは、にほんじかんだよね なので、 if (((t||0)/86400000|0)%2) location.href = 'b.html'; を if (((t-34200000||0)/86400000|0)%2) location.href = 'b.html'; にでもしようか。 9時間30分ずれてるから if (true) location.href = 'b.html'; としたとき、b.html がひらくよね?

ichigo-tounyu
質問者

お礼

ご丁寧にありがとうございます! さっそく教えていただいたように修正してみます。 明日再度確認いたしますね。 たびたびの質問に答えてくださってありがとうございます!!!!

ichigo-tounyu
質問者

補足

if (true) location.href = 'b.html'; にしたときはb.htmlが開きました! すごいです! 翌日はa.htmlを変更しておけば交互に変わる、 という認識であっていますでしょうか。

回答No.3

a.html のへっどぶぶんに、いかのようにかく (XMLHttpRequestがつかえることがじょうけんだけど) さーばのじかんをしゅとくしてる <!DOCTYPE html> <head> <script type="text/javascript"> function t(r){return (r=new XMLHttpRequest)?(r.open('HEAD','#',false),r.send(null),new Date(r.getResponseHeader('Date'))):null} if (((t||0)/86400000|0)%2) location.href = 'b.html'; </script> </head>

ichigo-tounyu
質問者

お礼

ご回答ありがとうございます!!! 早速サンプル作ってみますね!

ichigo-tounyu
質問者

補足

昨日教えていただいたようにサンプルを作ってサーバにあげて、 今朝a.htmlのURLで見てみたのですが変わっていませんでした。 何かやり方違っていますでしょうか。 お手数ですが教えてください。 よろしくお願いいたします。

回答No.2

これで出来ますよ。 ---------------------------- <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="output"></div> <script type="text/javascript"> var output = document.getElementById('output'); var date = new Date(); var hour = date.getHours(); // 分岐処理 if( 0 <= hour ) { output.innerHTML = 'A'; } else { output.innerHTML = 'B'; } </script> </body> </html> ------------------------------------ まぁ、このままだと機能しない気がしますが。 「0時から何時まで、↑のスクリプトを実行するか。」 という処理も追加しないと駄目かと思います。

ichigo-tounyu
質問者

お礼

ご回答ありがとうございました!!! さっそくサンプルを作ってみますね! 毎日0時から23時59分59秒まで実行したいのですが (これで、毎日0時に切り替わることになります・・よね) 何か書き加える必要はあれば教えていただけますでしょうか。

ichigo-tounyu
質問者

補足

サンプルを作ってみたところ、 AとBの中に文字列のみのときはOKだったのですが htmlを記述したところブラウザにエラーが出てしまいました 何か違う書き方をしていますでしょうか。。 重ね重ね質問ばかりですみません。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

javascriptでみる時間とはクライアントのPCのローカル時間です ユーザーの時計が狂っていたり、意図的にずらしてあれば精度に欠けるため 意味がないです。 やるならサーバー側のプログラムでcronやatなど時間を見てコピー処理するか アクセスされた時間を見て表示するものを切り換える処理するかでしょう

ichigo-tounyu
質問者

お礼

ご回答ありがとうございました!!! ローカル時間なのですね・・・ プログラミングについて知識がないので javascript以外のものも使うことは少し難しいです・・・

関連するQ&A