
JavaScriptで決まった「時刻」にページを移動するには?
お世話になります。
JavaScriptを使い、こちらが決めた時刻に自動的に
指定したページに切り替わりようにすどのようにすれば良いのでしょうか?
例:20時45分に現在のページから「page02.html」に移動する。
<script language="JavaScript" type="text/javascript">
<!--
var time = 45;
function setTimer(){
setTimeout("location.replace( './page02.html')", time * 60 * 1000);
}
//-->
</script>
自分なりに「setTimeout」「location.replace」を使って作ってみました。
移動する動作はリアルタイムで見られて良いのですが、
この場合、ページを開いてから45分後に移動してしまう為
指定した時刻での移動とはなりません。
「setTimeout」を使うのが間違っているような気がしますが、
他にどのようなメソッドを使ってよいのか分からない状態です。
必要に迫られJavaScriptを勉強し始めたばかりで分からないことだらけで
途方に暮れております。
ご指導よろしくお願いします。
No.5ベストアンサー
- 回答日時:
すでにすばらしい回答が出ていますが、一応おいときますね。
function myfunc(h,m,url){
var goTo = function(){location.href = url};
//現在の時刻を秒数にする
var now = new Date();
var currentS = (now.getHours()*60 + now.getMinutes())*60 + now.getSeconds() ;
//目標時刻を秒数にする
var targetS = (h*60 + m)*60;
//あと何秒で目標時刻になるか、差を求める(秒)
var jisaS = targetS - currentS;
//マイナスならすでに 今日は目標時刻を過ぎているということなので1日加算する
if( jisaS < 0 ) jisaS += 24*60*60; //1日の秒数を加算
//確認用
alert("あと"+ jisaS +"秒で "+ h+"時"+ m +"分です");
return setTimeout( goTo, jisaS*1000);
}
myfunc(20,40,"./page02.html");
度々ご指導頂きありがとうございます。
思っていた通りの動作をしてくれました。
今度は指定した日時で動作するよう自分なりにいじっていきたいと思います。
お二方共とても参考になるお答えを頂き感謝致します。
お二方にベストアンサーをお付けしたいのですが、
できないようなので最初にご指導頂いたJaneDue様に
ベストアンサーを付けさせて頂きます。
ありがとうございました。
No.4
- 回答日時:
ばぶぅ~の脳内いんたーぷりんたが、ちょっとおかしいかもよ?
ぜんかくくうはくは、はんかくにおきかえてください
var hoge = function ( y, m, d, hh, mm, ss, ms ) {
return Date.UTC( 1970 + y, 0 + m, 1 + d, hh, mm, ss, ms );
};
var fuga = function ( date, url ) {
var oneDay = 24 * 60 * 60 * 1000;
var cbFunc = function ( ) { location.href = url };
var d = new Date;
var s = d.getTime() - d.getTimezoneOffset() * 60000;
var m = s % oneDay;
while( date < m )
date += oneDay;
return setTimeout( cbFunc, date - m );
}
fuga( hoge( 0, 0, 0, 20, 45, 0, 000 ), 'http://okwave.jp/qa/q5902053.html' );
度々ご指導頂きありがとうございます。
思ったとおりの動作をしてくれました。
まだちゃんと理解はできていませんが、
色々と試していきたいと思います。
No.3
- 回答日時:
var d = new Date(1970,0,1,0,0,0,000);
var ms = d.getTime();
alert("なんで1970/1/1 0:00:00.000なのに、"+ms+"な数字になるのさ?0じゃない?");
alert("でも、その値を、1000*60で割ると、"+ms/60000+"になるよ");
alert("これとおなじじゃん"+d.getTimezoneOffset());
No.1
- 回答日時:
<script language="JavaScript">
<!--
function goToPage02(){
//まずは現在の時刻を得る
var now = new Date();
var hour = now.getHours(); //時
var min = now.getMinutes();//分
//もし21時 45分なら 指定ページへ飛ぶ
if( hour==20 && min==45){
location.replace( './page02.html');
}else{
//それ以外であれば、1分後に再度確認する。
//(またはあと何分で20時45分になるか算出して、そのミリ秒後にsetTimeout()すればなお良し)
setTimeout("goToPage02()", 60000);
}
}
goToPage02();
//-->
</script>
この回答への補足
ご回答頂きありがとうございます。
指定した時刻にページが移動できるようになりましたが、
この場合リロードしないとpage02が表示されませんでした。
>>(またはあと何分で20時45分になるか算出して、そのミリ秒後にsetTimeout()すればなお良し)
これを使えリロードしなくても20時44分からページを見ていて20時45分になったらパッと
page02に切り替わってくれるのではないかと思い一晩かけて作ってみましたが
うまくできませんでした。
<script language="JavaScript">
<!--
//fromDate(現在の時刻)からtoDate(指定時刻)を計算する,
function calcDays(fromDate, toDate) {
var elapse = toDate.getTime() - fromDate.getTime();
}
//現在の日時を取得
var now = new Date();
//指定時刻
var xday = new Date(now.getFullYear(), 4, 18, 20, 45);
//現在時刻からあと何分で指定時刻になるか算出。daysLeftに格納。そのミリ秒後にsetTimeout()
var daysLeft = calcDays(now, xday);
//setTimeoutで時間が来たらページを移動
function goToPage02(){
setTimeout("location.replace( './page02.html')", daysLeft);
}
goToPage02();
//-->
</script>
ミリ秒の計算やその他色々間違っていると思うのですが、
どこがどう間違っているのか見当がつかず悩んでおります。
解決策はないでしょうか?
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript JavaScript|特定URLだった時、特定の要素を変更するコードの書き方を教えてほしいです 2 2023/08/25 21:43
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウンでテキストエリア表...
-
更新更新日の表示を整えて表示...
-
html javascript リンク先アド...
-
DelphiのInputQueryで整数値を...
-
なぜmatchメソッドがエラーにな...
-
IEでF12を押さないとjavascriptが…
-
チェックボックスのチェック保持
-
C# 演算 分岐処理 繰り返し処理
-
四捨五入について
-
Ajaxでタイムアウトしてしまう
-
ホームページの最終更新日を他...
-
swfobjectのwmodeを再生中に変更
-
Cookieの設定
-
ドロップダウンメニューのドロ...
-
ASP.NET MVCでObjectをjsに渡す
-
条件に応じて座席表をつくりた...
-
ハイライト表示をしたい
-
HTMLで作った時報アプリが動き...
-
VBAでWEBのリンクをクリックしたい
-
あるgif画像(A.gifとします)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#OpenCv V4にのエラーに関する...
-
C#で、ContextMenuStripに動的...
-
google apps scriptの終了のさせ方
-
ASP.NET MVCでObjectをjsに渡す
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
ASP.NETのコントロールの値をJa...
-
なぜmatchメソッドがエラーにな...
-
javascriptでiframeのURL変更は?
-
gas スプレッドシートがアクテ...
-
翌月を取得するGASが分かりません
-
for文を使って変数に値を入れる...
-
APIを使って埋め込んだグーグル...
-
VSCODE[Python]の設定について
-
ローカルにあるファイルを検索...
-
C# 演算 奇数と偶数 表現の仕方
-
イベントが初めの一回しか起き...
-
C# 演算 分岐処理 繰り返し処理
-
setTimeoutによる繰り返しが途...
-
リンクの有無を判別して画像の...
おすすめ情報