アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

どなたか教えてください。
よろしくお願いいたします。

A 回答 (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';

+と-を間違えた!申し訳ない。ごめんなさい
    • good
    • 0
この回答へのお礼

長々とお付き合いくださって本当にありがとうございました!!!

回答も丁寧に説明してくださってとても感謝しております。
ほんとうにありがとうございました。

今後もいろいろと勉強していきたいとおもいます。
今回はお世話になりました。
ありがとうござました!

お礼日時:2011/04/26 08:47

> 本来はどういった手法でやるものなのでしょうか?


サーバー側で処理すべきです。
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 言語などを参照
    • good
    • 0
この回答へのお礼

なるほど・・・
プログラムのわからないわたしにも分かりやすいご回答ありがとうございます!!!

今回のサーバはECサイトでPHPが使えなかったので
教えていただいたやり方でやろうと思っています。

1点確認させていただけますでしょうか。

毎日0時にa.htmlからb.htmlに切り替える際に、
何時までa.htmlにアクセスするとb.htmlに飛ばされますでしょうか。

昨日の夕方に設定をして、今朝確認をしてみたらa.htmlの表示のままになってしまったので
もしかして終了時間があるのかと思い、最後のご質問をさせていただきました。

お礼日時:2011/04/22 17:36

けんしょうするために1にちもまつの?



86400000 = 24(じかん)×60(ふん)×60(びょう)×1000()
なので、1じかんおきなら 3600000 でわると、1じかんおきになるよ
1じかんもまてないなら、60000 でどう?1ふんおき。

でもこういうものは、すくりぷとでやるものじゃないよ。
    • good
    • 0
この回答へのお礼

60000で検証してみます!ありがとうございます!!
何も分からなくてすみません。。

そうなんですね!
本来はどういった手法でやるものなのでしょうか?

プログラムに弱くてすぐにjavascriptかなと思ってしまったのですがっ・・・
お時間のあるときでよいので教えてくださいませんでしょうか。

お礼日時:2011/04/21 14:48

あ~ごめん、きたいしているのは、にほんじかんだよね


なので、
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 がひらくよね?

この回答への補足

if (true) location.href = 'b.html';

にしたときはb.htmlが開きました!
すごいです!

翌日はa.htmlを変更しておけば交互に変わる、
という認識であっていますでしょうか。

補足日時:2011/04/21 11:19
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます!
さっそく教えていただいたように修正してみます。

明日再度確認いたしますね。

たびたびの質問に答えてくださってありがとうございます!!!!

お礼日時:2011/04/21 11:13

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>

この回答への補足

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

お手数ですが教えてください。
よろしくお願いいたします。

補足日時:2011/04/21 08:45
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/20 12:06

これで出来ますよ。



----------------------------
<!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時から何時まで、↑のスクリプトを実行するか。」
という処理も追加しないと駄目かと思います。

この回答への補足

サンプルを作ってみたところ、

AとBの中に文字列のみのときはOKだったのですが
htmlを記述したところブラウザにエラーが出てしまいました

何か違う書き方をしていますでしょうか。。
重ね重ね質問ばかりですみません。

補足日時:2011/04/18 09:14
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!!!

さっそくサンプルを作ってみますね!

毎日0時から23時59分59秒まで実行したいのですが
(これで、毎日0時に切り替わることになります・・よね)
何か書き加える必要はあれば教えていただけますでしょうか。

お礼日時:2011/04/18 09:06

javascriptでみる時間とはクライアントのPCのローカル時間です


ユーザーの時計が狂っていたり、意図的にずらしてあれば精度に欠けるため
意味がないです。
やるならサーバー側のプログラムでcronやatなど時間を見てコピー処理するか
アクセスされた時間を見て表示するものを切り換える処理するかでしょう
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!!!

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

お礼日時:2011/04/18 09:04

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